5分钟读懂RESTful API:Web世界的通用语言
大家好,欢迎来到我们的课程预习环节!在开始构建航空订单系统之前,我们需要先了解系统不同部分之间是如何“对话”的。这个“对话”的规则,就是我们今天要讲的 RESTful API。
想象一下你去餐厅吃饭。你(客户端)不会自己跑到后厨(服务器)去拿菜。你会通过服务员(API - Application Programming Interface)来点餐。你告诉服务员你要什么(请求),服务员去后厨沟通,然后把菜端给你(响应)。
API就是应用程序之间的“服务员”。那 RESTful 又是什么呢?它是一套广受欢迎的、优雅的“点餐规范”,让沟通变得清晰、高效、可预测。几乎所有现代Web应用(包括我们即将构建的系统)都在使用它。
REST(REpresentational State Transfer)的核心思想很简单,记住下面四点,你就掌握了80%。
1. 万物皆资源 (Resource)
在REST的世界里,所有东西都是“资源”。一个订单、一个用户、一个航班信息,都是一个资源。每个资源都有一个全球唯一的“地址”,这个地址就是我们熟悉的URL(统一资源定位符)。
获取所有订单:/api/orders
获取ID为123的那个订单:/api/orders/123
获取ID为123的订单的航班信息:/api/orders/123/flight-info
规则: URL中只使用名词,不使用动词。比如,用/api/orders,而不是/api/getAllOrders。
2. 统一接口 (Uniform Interface)
我们如何对这些资源进行操作呢?REST规定,使用标准的HTTP方法(也叫动词)来表达你的意图。
GET: 获取资源。 (“服务员,给我看看菜单 / 给我上123号订单的菜”)
POST: 创建资源。 (“服务员,我要下一个新订单”)
PUT: 更新或替换整个资源。 (“服务员,我123号订单的所有信息都要换成这个新的”)
PATCH: 部分更新资源。 (“服务员,我123号订单,只需要把状态改成‘已取消’”)
DELETE: 删除资源。 (“服务员,帮我取消123号订单”)
规则: 一个URL + 一个HTTP动词,就构成了一个清晰的操作指令。
3. 数据表现形式 (Representation)
服务器上的资源(比如数据库里的一行订单数据)并不会直接传给你。它会以某种格式的“表现形式”返回给你,最常见的就是 JSON (JavaScript Object Notation)。
当你请求 GET /api/orders/123,你可能收到这样的JSON:
Generated json
{
"id": 123,
"orderNumber": "MU5180-20231027-ABCD",
"status": "PAID",
"amount": 5600.00,
"user": {
"id": 42,
"name": "张三"
}
}
这就像服务员把菜品的详细信息写在了一张卡片上给你,而不是把整个后厨端给你。
4. 无状态 (Stateless)
这是REST最重要的特征之一。服务器不会记住你之前的任何请求。你每次请求,都必须包含所有必要的信息。
错误的方式(有状态):
你告诉服务员:“我是10号桌的。”
过了一会,你又说:“给我加份米饭。”(服务员需要记住你是10号桌)
正确的方式(无状态):
你告诉服务员:“我是10号桌的,我要一份宫保鸡丁。”
过了一会,你又说:“我是10号桌的,请给我加一份米饭。”
每次请求都自带身份信息(比如后面会学到的JWT Token),服务器处理完就忘,不保存任何上下文。这样做的好处是系统伸缩性极强,任何一台服务器都能处理你的请求。
总结一下:
RESTful API 就是用 名词URL 定位资源,用 HTTP动词 描述操作,用 JSON 传输数据,并且每次请求都是无状态的。
Comments (0)