REST风格&开发
REST简介
REST (Representational State Transfer) ,表现形式状态转换
传统风格资源描述形式
http://localhost/user/getById?id=1
http://localhost/user/saveUser
REST风格描述形式
http://localhost/user/1
http://localhost/user
优点:
- 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
- 书写简化
按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
http://localhost/users | 查询全部用户信息 | GET(查询) |
---|---|---|
http://localhost/users/1 | 查询指定用户信息 | GET(查询) |
http://localhost/users | 添加用户信息 | POST(新增/保存) |
http://localhost/users | 修改用户信息 | PUT (修改/更新) |
http://localhost/users/1 | 删除用户信息 | DELETE (删除) |
根据REST风格对资源进行访问称为RESTful
注意事项
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如: users、books、accounts...
注解
注解 | |
---|---|
@RequestMapping | |
@Controller | |
@RestController | 等同于@RequestMapping和@Controller组合 |
@ResponseBody | 设定http请求动作(动词) |
@PathVariable | 用于接收路径参数,使用(参数名称}描述路径参数 |
@RequestBody | 用于接收json数据 |
@RequsetParam | 用于接收ur1地址传参或表单传参 |
名称: @PathVariable
类型:形参注解
位置: SpringMVC控制器方法形参定义前面
作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应范例:
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
System.out.println("user delete..." + id);
return "{'module':'user delete'}";
}
@RequestMapping(value = "/books",method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody Book book){
System.out.println("book save..."+ book);
return "{'module': 'book save'}";
}
名称: @RestController
类型:类注解
基于SpringMVC的RESTfu1开发控制器类定义上方位置:
作用:设置当前控制器类为RESTfu1风格,等同于@Controller与@ResponseBody两个注解组合功能
范例:
@RestController
public class BookController {
}
名称: @GetMapping @PostMapping @PutMapping @DeleteMapping
类型:方法注解
位置:基于springMVC的RESTfu1开发控制器方法定义上方
作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如GetMapping对应GET请求
范例:
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("book getById..."+id);
return "{'module':'book getById'}";
}
·属性
value (默认) : 请求访问路径
应用
后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
如果发送非json格式数据,选用@RequestParam接收请求参数
采用RESTfu1进行开发,当参数数量较少时,例如1个,可以采用Pathvariable接收请求路径变量,通常用于传递id值