Restful接口学习笔记
参考:https://cloud.tencent.com/developer/news/315397
复制些到自己博客,方便复习。
Restful是一种软件架构风格,提供了一组设计原则和约束。主要用于客户端和服务端交互的项目。
有以下几个特点:
- 每一个URI代表一个资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
- REST(Representational State Transfer),表现层状态转化,指一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。
表现层(Representation): “资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)。
比如,文本可以用txt格式表现,也可以用HTML格式等表现。URI只代表资源的实体,不代表它的形式。它代表"资源"的位置,它的具体表现形式,是在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
状态转化(StateTransfer):访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。
因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(StateTransfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词,它们分别对应四种基本操作:
GET: GET用来获取资源
POST: POST用来新建资源(也可以用于更新资源)
PUT: PUT用来更新资源
DELETE: DELETE用来删除资源。
URI(Uniform Resource Identifier):是指一个用于标识某一互联网资源名称的字符串。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。Web上可用的每种资源:HTML文档、图像、视频片段、程序等由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
统一接口:REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。以HTTP/1.1协议为例,HTTP/1.1协议定义了一个操作资源的统一接口,主要包括7个HTTP方法: GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS。
GET(select):从服务器取出资源(一项或多项)。
POST(create):在服务器新建一个资源。
PUT(update):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(update):在服务器更新资源(客户端提供改变的属性)。
DELETE(delete):从服务器删除资源。
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
Web应用程序最重要的REST原则是,客户端和服务器之间的交互在请求之间是无状态的。
按照HTTP规范定义,使用标准方法进行资源的操作,比如GET、PUT、POST和DELETE。在服务器端,应用程序状态和功能可以分为各种资源。资源是一种概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用URI得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。
另一个重要的REST原则是分层系统,这表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。
当 REST 架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现。