1.为啥用RESTFul风格?
RESTful并非是新的技术,是一种基于http方法的API设计风格。规范代码,优化前端后端交互,是"约定大于配置"的体现。
Url 表明 要啥资源;http method 表明 针对资源的操作;http status code 表明 最终结果信息
2.啥是RESTful风格?
- REST 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。用名词表述,而且名词要用复数形式!!!
-
用HTTP方法体现对资源的操作(动词)
GET : 获取资源 POST : 添加资源 PUT : 修改资源 DELETE : 删除资源 -
HTTP状态码
200 OK 程序执行成功 ; 400 Bad Request 客户端错误; 500 Internal Server Error 服务器错误;
Get方法和查询参数不应该改变数据 POST、PUT、DELETE 可以改变数据
3.RESTFul风格集合的几个功能?
Filtering过滤:
使用唯一的查询参数进行过滤:
GET /cars?color=red 返回红色的cars
GET /cars?seats<=2 返回小于两座位的cars集合
Sorting排序: sort
允许针对多个字段排序 ;减号倒序,加号升序!
GET /cars?sort=-manufactorer,+model
这是返回根据生产者降序和模型升序排列的car集合
Field selection fields
移动端能够显示其中一些字段,它们其实不需要一个资源的所有字段,选择字段的能力,提高API可用性。
GET /cars?fields=manufacturer,model,id,color
Paging分页 offset
使用 limit 和offset.实现分页,缺省limit=20 和offset=0;
GET /cars?offset=10&limit=5
4.REST接口常用的注解?
- @RestController与@Controller
@RestController相当于 @Controller和@ResponseBody结合。它有两层含义:一是作为控制器注入到Spring上下文环境,二是请求响应为数据序列化(默认序列化方式是JSON),而不是跳转到html或模板页面。
- @RequestMapping 与@GetMapping、@PutMapping、@PostMapping、@DeleteMapping
@RequestMapping(value = “/article”, method = RequestMethod.GET)
新方法可以简写为: @GetMapping("/article"),其他同理。
- @RequestBody与@ResponseBody
用于接收和响应序列化数据(JSON),可以支持嵌套JSON数据结构。 - @PathVariable 与@RequestParam
PathVariable用于URI上的{参数}
RequestParam用于接收普通方式提交的参数
Tips:
- RESTful API正常是超媒体(Hypermedia),或HATEOAS(Hypermedia as the Engine of Application State 超媒体作为应用状态的引擎),就是返回结果中提供链接,链接到其他API,给用户一个功能指示。
- 不要发布无版本的API。 /api/v1/blog 面向扩展开放,面向修改关闭。