REST
- REST不是一种协议,不是一种文件格式,更不是一种开发框架。
- REST是一系列的设计约束的集合,包括无状态性、将超媒体作为应用状态引擎等,我们将这些约束 称为 Fielding 约束。
人——机 Web
三项技术支撑着当今的互联网,它们分别是:
- URL命名约定
- HTTP协议
- HTML文档
资源和表述
- 当我们通过Web浏览器向Web服务器的URL 发送一次HTTP请求,服务器会发送一个文档作为相应(通常是一个HTML文档,也可能是图片或其他二进制文档)
- 不论服务器发送了什么文档,我们都将这个文档称之为资源的表述(Representation of the Source)
可寻址性
- URL和URI
- 每个URL代表一个也仅代表一个资源。URL和URI的介绍
- 可寻址性原则指的是一个资源应该有一个属于自己的URL。
- 一个URL是一个唯一的名字,用户可以通过URL毫无歧义的引用资源。
无状态性-"登录"的假象
- 当访问一个网站的主页,从用户的角度来看,我已经"登录到"主页面了。
- 但对服务器而言,它在作出响应之后即已经忘记了我的存在。
- Web服务器并不需要因为我的浏览器因为停留在这个主页,就需要为我通宵达旦的工作。 以上即是“无状态性” 。
无状态性(statelessness)
- 指的是服务器不关心客户端的状态。
- 并不是说客户端和服务器端不需要保存状态。
自描述(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链接、表单的抽象就行