简介
REST(Representational State Transfer),表现形式状态转换,访问网络资源的格式
传统访问资源的格式:
http://localhost/user/getById?id=1
http://localhost/user/saveUser
REST风格描述:
http://localhost/user/1
http://localhost/user
REST风格的优点:
1. 隐藏资源访问行为,无法通过地址的值对资源的何种操作
2. 书写简化
按照REST风格访问资源时使用行为动作
区分对资源进行了何种操作
http://localhost/users
查询全部用户信息 GET(查询)
http://localhost/users/1
查询指定用户信息 GET(查询)
http://localhost/users
添加用户信息 POST(新增、保存)
http://localhost/users
修改用户信息 PUT(修改、更新)
http://localhost/users/1
删除用户信息 DELETE(删除)
上述行为是约定方式,约定不是规范,可以打破,所以称为REST风格,而不是REST规范
描述模块的名称通常使用的是复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts…
RESTful案例
@RestController
@RequestMapping("/books")
public class BookController {
/**
* @PathVariable 代表路径变量,从路径中取值
* {}路径参数占位
* @param id
* @return
*/
// @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
@DeleteMapping("/{id}")//简化上面的书写,下同
public String delete(@PathVariable Integer id){
System.out.println("book delete..."+id);
return "{'module':book delete}";
}
// @RequestMapping(value = "/{id}",method = RequestMethod.GET)
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("book getById..."+id);
return "{'module':book getById}";
}
// @RequestMapping(method = RequestMethod.GET)
@GetMapping
public String getAll(){
System.out.println("book getById...");
return "{'module':book getAll}";
}
}
@RequestBody用于接收JSON数据
@RequestParam用于接收url地址参数或表单传参
@PathVariable用于接收路径参数,使用{参数名称}
描述路径参数
一个参数使用PathVariable,若超过1个时,将数据封装成json数据传送