SpringBoot 默认集成了 jackson

    REST就是Representational State Transfer的缩写呀,翻译为中文就是‘表述性状态转移(鬼看得懂啊)

    RestFul就是一个规范
    RESTful Web 服务与传统的 MVC 开发一个关键区别是返回给客户端的内容的创建方式:
    传统的 MVC 模式开发会直接返回给**客户端一个视图**,
    但是 RESTful Web 服务一般会将返回的数据以 **JSON 的形式返回**,这也就是现在所推崇的前后端分离开发。


    @RestController 将返回的对象数据直接以 JSON(主要的方式) 或 XML 形式写入 HTTP 响应(Response)中。

    1. - 单独使用 `@Controller` 不加 `@ResponseBody`的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC 的应用,对应于前后端不分离的情况。
    2. - `@RestController`只返回对象,对象数据直接以 JSON XML 形式写入 HTTP 响应(Response)中,这种情况属于 RESTful Web服务,这也是目前日常开发所接触的最常用的情况(前后端分离)。

    <br />
    <br />
    @RequestMapping :上面的示例中没有指定 GET 与 PUT、POST 等,因为@RequestMapping**默认映射所有HTTP Action**,你可以使用@RequestMapping(method=ActionType)来缩小这个映射。

    @PostMapping实际上就等价于 @RequestMapping(method = RequestMethod.POST),同样的 @DeleteMapping ,@GetMapping也都一样,常用的 HTTP Action 都有一个这种形式的注解所对应。

    @RequestBody:可以HttpRequest body 中的 JSON 类型数据反序列化为合适的 Java 类型**。(和这个一起看) (自动 反序列化 . 牛批把)**

    1. @PostMapping("/book")
    2. public ResponseEntity<List<Book>> addBook(@RequestBody Book book) {
    3. books.add(book);
    4. return ResponseEntity.ok(books);
    5. }

    @PathVariable :取url地址中的参数。@RequestParam url的查询参数值。
    给你一个范例

    1. @DeleteMapping("/book/{id}")
    2. public ResponseEntity deleteBookById(@PathVariable("id") int id) {
    3. books.remove(id);
    4. return ResponseEntity.ok(books);
    5. }

    ResponseEntity: 表示整个HTTP Response:状态码,标头和正文内容。我们可以使用它来自定义HTTP Response 的内容。

    @ResponseBody
    作用:

    1. 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

    使用时机:

    1. 返回的数据不是html标签的页面,而是其他某种格式的数据时(如jsonxml等)使用;