1.为啥用RESTFul风格?

       RESTful并非是新的技术,是一种基于http方法的API设计风格。规范代码,优化前端后端交互,是"约定大于配置"的体现。

       Url 表明  要啥资源http method 表明 针对资源的操作http status code 表明 最终结果信息
 

2.啥是RESTful风格?

  1. REST 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。用名词表述,而且名词要用复数形式!!!
  2. 用HTTP方法体现对资源的操作(动词)
    GET : 获取资源       POST : 添加资源       PUT : 修改资源          DELETE : 删除资源

  3. 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 athe Engine oApplication State 超媒体作为应用状态的引擎),就是返回结果中提供链接,链接到其他API,给用户一个功能指示
  • 不要发布无版本的API。  /api/v1/blog   面向扩展开放,面向修改关闭。