REST

REST

  • REST不是一种协议,不是一种文件格式,更不是一种开发框架。
  • REST是一系列的设计约束的集合,包括无状态性、将超媒体作为应用状态引擎等,我们将这些约束 称为 Fielding 约束。

人——机 Web

三项技术支撑着当今的互联网,它们分别是:

  1. URL命名约定
  2. HTTP协议
  3. HTML文档



资源和表述

  • 当我们通过Web浏览器向Web服务器的URL 发送一次HTTP请求,服务器会发送一个文档作为相应(通常是一个HTML文档,也可能是图片或其他二进制文档)
  • 不论服务器发送了什么文档,我们都将这个文档称之为资源的表述(Representation of the Source)



可寻址性

  • URL和URI
  • 每个URL代表一个也仅代表一个资源。URL和URI的介绍
  • 可寻址性原则指的是一个资源应该有一个属于自己的URL。
  • 一个URL是一个唯一的名字,用户可以通过URL毫无歧义的引用资源。



无状态性-"登录"的假象

  • 当访问一个网站的主页,从用户的角度来看,我已经"登录到"主页面了。
  • 但对服务器而言,它在作出响应之后即已经忘记了我的存在。
  • Web服务器并不需要因为我的浏览器因为停留在这个主页,就需要为我通宵达旦的工作。 以上即是“无状态性”

无状态性(statelessness)

  1. 指的是服务器不关心客户端的状态。
  2. 并不是说客户端和服务器端不需要保存状态。



自描述(self-descriptive)

当请求一个网页的时候,你收到的HTML文档不仅仅可以提供你所要求的信息,还会帮助你决定下一步的操作



链接

当我们单击链接<a href="/messages">发表观点</a>,我的浏览器将向与上次同样的服务器发 送HTTP请求。




向主机名(Host)为 www.servicecomputing.top 发送message请求,采用的协议是HTTP 1.1版本,采用的方法是GET方法
当发送请求之后,服务器会响应(响应头--- 状态码、资源的表述)



HTTP 标准方法

HTTP标准(RFC 2616)定义了客户端可以应用到一个资源的 8 种方法。
重点关注的方法包括:
  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • PATCH



表单和重定向

当我们在文本框中输入点什么,点击 提交,一个新的HTTP请求产生了。




应用状态(Application State)

  • 图中的每个状态都对应于浏览器窗口打开的一个特定页面(或没有页面),在REST的世界里,这些 信息被称之为 应用状态 (Application State)。
  • 当我们在页面间不停切换(通过单击链接或提交表单)的时候,即是从一个状态转换到另一个状态。



资源状态(Resource State)

服务器管理的资源,如主页(通过 / 提供服务)和观点列表(通过 /messages)提供服务;服务 器同时也将每条观点作为资源进行管理。这些资源的状态叫做 资源状态(Resource State)。

GET /messages 请求不会改变资源状态

POST /messages 请求将服务器切换到一个新的状态,且再也没法回到原来的状态了

网站是通过表述性状态移交(REpresentational State Transfer)工作的: 应用状态保存在客户端,但服务器端可以向客户端发送表述(Representation)文档来操纵它 资源状态保存在服务器端,但客户端可以通过向服务器发送表述操作它(提交的表单描述了客户端所期望的 新状态)




连通性(Connectedness)

通过 、 每个网页会告诉你如何获取相邻的网页。

网络作为一个整体按照连通性原则运转,这个原则的叫法是“将超媒体作为应用状态引擎 (hypermedia as the engine of application state, HATEOAS),也可称为连通性或超 媒体约束。

超媒体:认为是HTML链接、表单的抽象就行

posted @ 2020-06-08 22:01  FenixG  阅读(262)  评论(0编辑  收藏  举报