设计 API
作为工程师,我们总是强调在编码前先进行方案的设计。API 也不例外,我们需要根据业务明确一个 API 的功能目的, 然后结合相关技术栈,将业务语言翻译成技术语言。 通常来说,API 规划和设计是围绕着文档进行的。
API 示例
我们在这份指南中使用了一个商城服务的例子,该商城服务提供了两个核心概念:
- 商品,包含 ID、名称、价格等信息;
- 订单,包含商品 ID、消费者 ID(在这个例 子中,我们不展开消费者的概念)和商品数量;
针对这两个核心概念,我们将设计如下的三个 API:
- 获取商品详情(
GetProductById)
Request:
'${baseUrl}/products/1'
Response:
{
"id": 1,
"name": "iPhone 13 Pro",
"price": 999.99,
"updated_at": "2023-04-17T05:49:54.029Z",
"created_at": "2023-04-17T05:49:54.029Z"
}
- 创建商品(
CreateProduct)
Request:
curl '${baseUrl}/products' \
-X POST
--data '{
"name": "iPhone 13 Pro",
"price": 999.99
}'
Response:
{
"id": 1
}
- 创建订单(
CreateOrder)
Request:
curl '${baseUrl}/orders' \
-X POST \
--data '{
"customer_id":"user_ascx8e21nsd",
"product_id": 1,
"quantity": 1
}'
Response:
{
"order_id": 123
}
背景知识
Postman
我们将使用 Postman 来演示如何设计 API。因此,在继续之前,请确保你已经安装了 Postman,需要注意的是,我们需要使用到 Postman 提供的 Mock Server 功能。因此,你必须登录 Postman 并且你的所有操作应该都在 Workspace 中进行。
RESTful API
RESTful 架构风格的主要特点包括:
- 资源的唯一标识:每个资源都有唯一的标识,如 URL。
- 统一的接口:使用统一的 HTTP 方法和标准状态码,如 GET、POST、PUT、DELETE 等。
- 无状态:API 不应该保存客户端的状态信息,每次请求都应该包含完整的信息,便于横向扩展。