Spring Boot 2.0 读书笔记_15:REST

版权声明:未经博主本人同意,请勿私自转发分享。 https://blog.csdn.net/Nerver_77/article/details/88751401

10.REST

REST原则 是 Roy Thomas Fielding 在 2000年博士论文中提出的。他对互联网软件架构原则命名为 REST [表现层状态转化]。如果一个架构符合 REST原则,就称它为 RESTful 架构

关于 RESTful 架构,最好的方法是去理解 Representational State Transfer 的意义。

  • 资源 [Resources]

    REST 的名称 “表现层状态转化”,其实省略掉了主语。 表现层 其实指的是 资源

    所谓 资源,就是网络上一个实体(具体信息),可以是文本、图片、音视频、服务等。标识资源实体的识别符为: URI。 每种资源均对应一个特定的 URI,要获取这个资源,访问它的 URI 即可。

  • 表现层 [Representation]

    资源 是一种信息实体,他可以用多种表现形式。 表现层资源 具体呈现的形式。比如:文本可以用 txt 、HTML、XML、JSON、二进制格式进行表现。URI 只代表信息实体的位置,无关乎表现形式。 信息实体的表现形式应该在 HTTP 请求头部信息中采用 Accept 和 Content-Type 字段指定。

  • 状态转换 [State Transfer]

    用户通过浏览器访问网站,就代表了 [客户端] 和 [服务端] 的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。 HTTP协议是一个无状态的互联网通信协议,这意味着所有的状态信息均保存在 [服务端]。因此,如果 [客户端] 想要操作 [服务端] ,必须通过某种手段,让 [服务端] 发生 状态变化。而这种转化是建立在 表现层 之上的。因此称为: 资源表现层状态转化。

  • HTTP 协议里存在七个常用表示操作方式的动词

    • GET [获取资源]
    • POST [新建资源、更新资源]
    • PUT [更新资源,客户端需要提供完整的资源属性]
    • DELETE [删除资源,在业务系统中删除并不是指的物理删除,而是逻辑删除。资源通常仍然在数据库中,只是状态设置为删除状态]
    • PATCH [更新资源的部分属性]
    • HEAD [类似 GET,但仅仅有 HTTP 头信息,头信息包含了需要查找的信息]
    • OPTIONS [用于获取 URI 所支持的方法,响应信息会在 HTTP 头中包含一个名为 Allow的key,value是所支持的方法]
  • Web框架中 REST风格架构要求:

  • @RestController

    Spring Boot 应用引入基础web开发相关依赖,即可自动支持REST。

    为了简化开发,针对REST架构风格,会有一些便捷注解进行声明。(原生注解也可实现REST,这里只是为了简化开发) 比如:

    @RestController = @Controller + @ResponseBody

    可以使用请求模拟工具:Postman,进行请求的模拟测试。

  • Swagger UI [Restful风格接口的文档在线自动生成和测试的框架]

    Swagger是个前后端协作的利器,解析代码里的注解生成JSON文件,通过Swagger UI生成网页版的接口文档,可以在上面做简单的接口调试。详情可以查看我博客之前提到的Spring Boot整合Swagger的文章。链接如下:

    Swagger初探

猜你喜欢

转载自blog.csdn.net/Nerver_77/article/details/88751401