REST风格是什么
REST翻译过来就是形式状态转换
- 传统的资源风格如下
- http://localhost/user/getById?id=1
- http://localhost/user/saveUser
- REST风格资源如下
- http://localhost/user/getById/1
- http://localhost/user
- 从上面我们可以只管看出来REST风格的资源没有? =这种符号
从中我们可以看到REST风格的优点
- 隐藏了资源访问行为
- 书写简化了
REST风格如何区别不同的操作
REST风格是根据行为来区别操作的
当然我们也可以自定义提交形式和对应的功能之间的关系
举例实现REST风格
我们举其中的一个例子
@RequestMapping(value="/users/{id}", method =RequestMethod.GET)
@ResponseBody
public String get(@PathVariable int id){
System.out.println(id);
return "get is running";
}
这个method实际上就确定了这个方法指定的行为
如果是get方法访问的就执行这个方法
method =RequestMethod.GET
这个value中的{id}就是访问资源里面的数据
value="/users/{id}"
参数列表里面的这个注解的意思是 从上面的{id}里面取出来数值给 这个int id
public String get( @PathVariable int id)
使用REST风格的步骤
- 设定http请求动作
即 @RequestMapping(method =设定的动作) - 设定请求参数(路径变量)
即 value="/users/{id}设定参数
@PathVariable int id接收参数
@RequestBody @RequestParam 和@PathVariable
- 区别
- @RequestBody用于接收url地址传参或者表单传参
- @RequestParam 用于接收json数据
- @PathVariable用于接收路径参数,使用{参数名字}描述路径参数
- 应用
- 发送参数超过一个小时用json格式
- 非json格式用@ResquestParam接受
- 使用RESTful开发的时候参数比较少可以用@PathVariable来接收路径变量通常来传递id值
便捷开发
@Controller和 @ResponseBody提前到class上面时
这俩可以用
@RestContrller来代替
像下面这样的写起来很麻烦
@RequestMapping( method =RequestMethod.GET)
可以用 @PostMapping来代替
@PostMapping
public String put(){
System.out.println(dsDataSource.toString());
return "putmappring is running";
}
同样的还有
@DeleteMapping("/{id}");
@PutMapping
@GetMapping
等注解