什么是 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 getStudents(){
List 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 getStudents(@PathVariable Integer page,@PathVariable Integer pageSize){
List 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
原文讲的很好,更详细,本文只是大概演示了一下用法。