【10月19日】REST架构模式

什么是REST

  • REST (Representational State Transfer):表述性状态转移,分布式超媒体软件的一种架构风格。
  • 一套简单的设计原则、一种架构风格(或模式),不是一种具体的标准或框架。
  • 基于使用HTTP、URI等现有的广泛流行的协议和标准,并由几个核心抽象概念支撑。
  • 对Web的本质回归:一种真实描述Web的方式,不被特定时期的特定应用程序概念歪曲。
  • 提供区分良好实践和糟糕实践的途径:判断特定实践是否与Web架构一致。

资源

  • URI规范指出:

    资源可以是任何有标示的东西;

    并非所有的资源都是通过网络能够获取的。

  • 任何事物,只要有被引用的必要,就是一个资源(resource)。它可以是一个事物,也可以是一个抽象的概念。

  • 通常一个资源是某个可以存放在计算机上并体现为比特流的事物。在Web中,可以这样认为----资源是URI标示的东西。


表示

  • 资源和表示不是一码事。Web上获取的不是资源,而是资源的表示。
  • 对于给定的资源,可以有很多不同的表示。

状态

  • 在客户-服务端模式下,让客户端维护应用状态,并确保服务端向服务器发出的请求都包含理解请求所需的全部信息,而服务器不应该维护该状态。
  • REST式解决方案是使用URI。每个概念上独立的资源都可使用单个URI,不希望通过Cookie或隐藏在有效负载的参数来提供额外信息。

REST约束和风格

  • URI表示资源
  • CURD操作
  • 状态表述性转移
  • 无状态服务
  • HTTP状态码
  • Cache控制
  • Proxy

Rest核心是架构以资源为核心的模型


REST关键原则

  • 为所有资源定义ID
  • 将所有资源链接在一起
  • 使用标准方法
  • 资源多重表示
  • 无状态通信

为所有资源定义ID

  • 无论Web中的资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等,都可以使用URI标识。

使用标准方法

  • 常用的HTTP标准方式是GET/POST。除此之外,标准方法集合中还有PUT、DELETE、HEAD、OPTIONS等八种方法

RESTful

  • RESTful:符合REST约束风格和原则的应用程序或设计就是RESTful

    举例:

    /emp/1 HTTP GET 查询id=1的emp

    /emp/1 HTTP DELETE 删除id=1的emp

    /emp/1 HTTP PUT 更新emp

    /emp/1 HTTP POST 新增emp


Token认证机制

  • RESTful提供的API是无状态的,即下一次调用请求与当前的调用请求时完全无关,但这就无法保证系统资源的安全性。
  • Token机制(令牌机制)就是用来解决无状态和安全性之间的矛盾。其实现原理如下:
    • 用户发送用户名和密码(一般密码加密),请求验证通过;
    • 服务器判断用户名和密码是否正确。
    • 服务器验证通过,返回Token及过期时间
    • 所有请求携带返回的Token在过期时间内即可通过Token验证并正常使用RESTful API(服务器验证Token过期,则无法正常使用RESTful API,需要重新请求验证)
posted @ 2020-10-19 16:23  tantanli  阅读(207)  评论(0编辑  收藏  举报