为什么要使用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:soap
、xmlns:tem
、xmlns: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 | 删除某个指定动物园的指定动物 |
也就是 动词 + 宾语 的设计风格。