Skip to main content

介绍

为什么要使用RESTful API

REST 是 Representational State Transfer 的缩写,中文翻译为“表现层状态转化”。REST 是一种软件架构风格,它提供了一组设计原则和约束条件,用于创建 Web 服务。RESTful API 是一种基于 REST 架构风格的 API,它的设计遵循 REST 的设计原则和约束条件。

它的架构风格、设计风格可以让软件更加清晰、更加易于理解、更加易于维护。

RESTful API 的特点

  • RESTful API 是基于 HTTP 协议的,所以它的特点就是 HTTP 协议的特点。
  • RESTful API 是无状态的,这意味着服务器不会保存客户端的状态,每次请求都是独立的,服务器不会记住上一次请求的信息。
  • RESTful API 是可缓存的,这意味着服务器可以缓存客户端的请求,下次请求时直接返回缓存的结果,而不是重新计算。
  • RESTful API 是可扩展的,这意味着服务器可以根据客户端的需求,返回不同的数据格式,比如 JSON、XML、YAML 等。
  • RESTful API 是可分层的,这意味着服务器可以根据客户端的需求,返回不同的数据格式,比如 JSON、XML、YAML 等。

RESTful API 的诞生

RESTful API 的诞生是为了解决 Web 服务的一些问题,比如:

  • 传统的 Web 服务是基于 SOAP 协议的,而 SOAP 协议的数据格式是 XML,这样就会导致数据冗余,比如:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org" xmlns:ns="http://schemas.datacontract.org/2004/07/MyService">
<soap:Header/>
<soap:Body>
<tem:GetUser>
<tem:userId>1</tem:userId>
</tem:GetUser>
</soap:Body>
</soap:Envelope>

上述 XML 数据中,有很多重复的信息,比如:xmlns:soapxmlns:temxmlns:ns 这些都是命名空间,它们的作用是为了区分不同的数据,但是这些数据对于客户端来说是没有用的,所以就会导致数据冗余。

设计示例

请求方法请求路径作用
GET/zoos列出所有动物园
POST/zoos新增一个动物园
GET/zoos/:id获取某个指定动物园的信息
PUT/zoos/:id更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH/zoos/:id更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE/zoos/:id删除某个动物园
GET/zoos/:id/animals列出某个指定动物园的所有动物
DELETE/zoos/:id/animals/:animal_id删除某个指定动物园的指定动物

也就是 动词 + 宾语 的设计风格。