RESTful API(Representational State Transfer)是一种基于HTTP协议的接口设计风格,用于构建网络服务。
Restful API 也是目前十分经典并且被广泛应用的 API 书写规范。你可以在各类网站上看到的它的影子。
如果你想要设计一个更加规范的网站,那么 Restful API 是你最值得了解的一个知识点。
开始
这是一个 RESTful API 例子:
POST https://api.example.com/v1/libraries/1/categories/2/books
Content-Type: application/json
{
"title": "The Art of Computer Programming",
"author": "Donald E. Knuth",
"isbn": "978-0201896831",
"publicationDate": "1968-01-01"
}
上述中的例子具有几个部分:
POSTHTTP 动词[https://api.example.com](https://api.example.com)API域名,有时候如果域名需要复用,则可以https://xx.com/api/v1版本libraries,categories,books使用名词来定位资源。/libraries/1/categories/2/booksRESTful API 应该使用 URI(统一资源标识符) 来定位资源,以确保每个资源都有一个唯一的标识符。URI 应该具有层级结构,以便表示资源之间的关系。- 使用
json或者XML表示数据
Restful API 更多的部分
除了上述的部分,Restful API 还可以具有更多,例如参数:
GET /users?page=1&pageSize=10
使用 HATEOAS(Hypermedia As The Engine Of Application State)来提高 RESTful API 的可发现性:
GET /users/1
{
"id": 1,
"name": "Tom",
"age": 25,
"links": [
{
"rel": "orders",
"href": "/users/1/orders"
},
{
"rel": "edit",
"href": "/users/1/edit"
}
]
}
客户端可以通过 API 返回的链接自主地遍历 API,并进行资源的操作。
Restful API 的发展
RESTful API 的未来发展方向主要包括以下几个方面:
- 支持更多的协议和数据格式,如 gRPC、GraphQL 等。
- 增强 API 的安全性和稳定性,包括 OAuth2 认证、HTTPS 协议等。
- 支持更多的语言和框架,使得 RESTful API 可以更加广泛地应用于不同的开发环境中。
- 支持自动化工具,如 Swagger、Postman 等,以便更加方便地进行 API 的设计、文档编写和测试。
QA
Q:为什么在RESTful API设计中,经常使用复数名词作为路径的一部分?
A:
资源集合的概念 在RESTful架构中,每个URL代表一种资源。通常情况下,API会操作资源的集合(collection)。使用复数名词可以直观地表示这一点。例如:
https://api.example.com/v1/libraries表示多个图书馆的集合。https://api.example.com/v1/libraries/1/books表示图书馆ID为1的所有图书的集合。
语义清晰 复数名词明确地表示资源的集合,而单数名词(id)则表示单个资源。这有助于使API的语义更加清晰。例如::
- GET /libraries 获取所有图书馆
- POST /libraries 创建一个新的图书馆
- GET /libraries/{libraryId} 获取某个特定图书馆的信息