REST风格开发
Rest简介
REST (Representional State Transfer) 表现形式状态转换(资源描述风格)
-
传统风格资源描述形式
-
REST风格描述形式
但是REST风格描述不太清楚,可能会有歧义,故有:
路径 + 请求方式 =资源的访问行为
请求方式springmvc支持8种,常用的为上述4种
注:上述行为是约定方式,约定不是规格,可以打破(建议)
描述模块的名称通常使用复数,表示此类资源,而不是单个资源
根据REST风格对资源访问称为RESTful
RESTful入门案例
假设表现层UserController中有一个保存user和根据id删除user的方法
@RequestMapping("/save")
@Responsebody
public String save(@RequestBody User user){
System.out.println("user save..." + user);
return "{'module';'user save'}"
}
@RequestMapping("/delete")
@Responsebody
public String delete(Integer id){
System.out.println("user delete..." + id);
return "{'module';'user delete'}"
}
REST风格书写
@RequestMapping(value = "/users",method = RequestMethod.POST)
@Responsebody
public String save(@RequestBody User user){
System.out.println("user save...");
return "{'module';'user save'}"
}
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@Responsebody
public String delete(@PathVariable Integer id){
System.out.println("user delete..." + id);
return "{'module';'user delete'}"
}
上述案例主要有两部分:
- 设定http动作,常用四种GET,PUT,POST.DELETE
- 设定请求参数
- 路径上面加入
- 方法参数里面加入@PathVariable注解,表示参数从路径上获取,名称需对应
- @RequestBody 请求体参数 用于接收json
- @RequestParam 接收url地址传参和表单传参
- @PathVariable 用于接收路径参数
REST快速开发
@Controller
public class UserController(){
@RequestMapping(value = "/users",method = RequestMethod.POST)
@Responsebody
public String save(@RequestBody User user){
System.out.println("user save..." + user);
return "{'module';'user save'}"
}
@RequestMapping(value = "/users",method = RequestMethod.PUT)
@Responsebody
public String update(@RequestBody User user){
System.out.println("user update..."+ user);
return "{'module';'user update'}"
}
}
我们发现
@RequestMapping(value = "/users",method = RequestMethod.POST)
@Responsebody
两个方法都使用了非常相似的注解,只有Http的方法不同
所以我们可以对其进行简化:
@RestController
@RequestMapping("/users")
public class UserController(){
@RequestMapping(method = RequestMethod.POST)
public String save(@RequestBody User user){
System.out.println("user save..." + user);
return "{'module';'user save'}"
}
@RequestMapping(method = RequestMethod.PUT)
public String update(@RequestBody User user){
System.out.println("user update..."+ user);
return "{'module';'user update'}"
}
}
总结一下,REST风格就是一种资源描述风格,这种风格的主要围绕着资源展开,包括对资源的操作。其中操作在spring中有8种,我们常用的有4种。