REST - RESTFUL风格是什么以及Java中怎么使用

什么是 RESTFUL 风格?

REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,指的是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是 RESTful。REST并没有一个明确的标准,而更像是一种设计的风格。
Representational(表述性) : REST 资源实际上可以用各种形式来进行表述,包括 XML、JSON 甚至 HTML——最适合资源使用者的任意形式。
State(状态):当使用 REST 的时候,我们更关注资源的状态而不是对资源采取的行为。
Transfer(转义)*:REST 涉及到转移资源数据,它以某种表述性形式从一个应用转移到另一个应用。

RESTFUL特点

1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;
4、资源的表现形式是XML或者HTML;
5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

CRUD动作 HTTP方法
add(新增) POST
update(修改) PUT
delete(删除) DELETE
get(查询) GET

一般来说,我们平常都是用的是GET和POST请求,实际上还有很多其他请求方式。在RESTFUL风格里一般就是用上诉这四种对应的关系,但是也不是约定死了的。POST同样也可以用来做查询请求,当我们做某些查询时,希望带的条件是不要暴露出来时。POST也可以用来做修改操作。

RESTFUL在Java中怎么使用

一、传统与REST

方法 传统风格URL REST风格URL
查询(GET) /getAllStudent /sutdent
新增(POST) /addStudent?name=关羽 /student
修改(PUT) /updateStudent?id=1&&name=张飞 /student
删除(DELETE) /deleteStudent?id=1 /student/1

二、Java(Spring)中使用示例

1、创建Student类

使用lombok生成get/set/构造方法

@Data
@AllArgsConstructor
public class Student {
    private Long id;
    private String name;
    private String sex;
}
2、创建Controller类

RESTFUL风格的增删改查。

@RestController
@RequestMapping("/api/v1")
public class TestController {

    /**
     * 查询所有Student
     */
    @GetMapping("/student")
    public List<Student> getStudents(){
        List<Student> students = new ArrayList<>();
        students.add(new Student(1L,"曹操","男"));
        students.add(new Student(2L,"刘备","男"));
        students.add(new Student(3L,"孙权","男"));
        students.add(new Student(4L,"小乔","女"));
        return students;
    }

    /**
     * 分页查询Student
     * @param page 当前页
     * @param pageSize 一页多少条数据
     */
    @GetMapping("/student/{page}/{pageSize}")
    public List<Student> getStudents(@PathVariable Integer page,@PathVariable Integer pageSize){
        List<Student> students = new ArrayList<>();
        students.add(new Student(1L,"第" + page + "页","男"));
        students.add(new Student(2L,"一页查" + pageSize + "条数据","男"));
        return students;
    }

    /**
     * 新增Student
     * @param student 要新增的Student
     */
    @PostMapping("/student")
    public Student addStudent(@RequestBody Student student){
        return student;
    }

    /**
     * 修改Student
     * @param student 要修改的Student
     */
    @PutMapping("/student")
    public Student updateStudent(@RequestBody Student student){
        return new Student(student.getId(),"修改","男");
    }

    /**
     * 删除Student
     * @param id 要删除Student的id
     */
    @DeleteMapping("/student/{id}")
    public Student deleteStudent(@PathVariable Long id){
        return new Student(id,"删除","女");
    }
}
3、使用POST查看结果

1、查询全部
在这里插入图片描述
2、分页查询
在这里插入图片描述
3、修改
在这里插入图片描述
4、新增
在这里插入图片描述
5、删除
在这里插入图片描述
我以前理解的REST风格就是使用GET\POST\DELETE\PUT请求就行了,即在Java中使用对应的@RequestMapping即可,后来才发现,RESTFUL风格在URL地址上就和传统不一样。
本文具体参考:使用RESTful风格开发Java Web
原文讲的很好,更详细,本文只是大概演示了一下用法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章