logo
siara
  • Home
  • Pricing
logo
siara
Copyright © 2025 siara. Ltd.
Links
SubscribeManage Subscription
Powered by Postion - Create. Publish. Own it.
Privacy policy•Terms

Postion

RESTful API 核心概念

RESTful API 核心概念

S
by Shotify
•Jul 17, 2025

5分钟读懂RESTful API:Web世界的通用语言

大家好,欢迎来到我们的课程预习环节!在开始构建航空订单系统之前,我们需要先了解系统不同部分之间是如何“对话”的。这个“对话”的规则,就是我们今天要讲的 RESTful API。

问题:什么是API?为什么要用RESTful?

想象一下你去餐厅吃饭。你(客户端)不会自己跑到后厨(服务器)去拿菜。你会通过服务员(API - Application Programming Interface)来点餐。你告诉服务员你要什么(请求),服务员去后厨沟通,然后把菜端给你(响应)。

API就是应用程序之间的“服务员”。那 RESTful 又是什么呢?它是一套广受欢迎的、优雅的“点餐规范”,让沟通变得清晰、高效、可预测。几乎所有现代Web应用(包括我们即将构建的系统)都在使用它。

REST的四大核心原则

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最重要的特征之一。服务器不会记住你之前的任何请求。你每次请求,都必须包含所有必要的信息。

错误的方式(有状态):

  1. 你告诉服务员:“我是10号桌的。”

  2. 过了一会,你又说:“给我加份米饭。”(服务员需要记住你是10号桌)

正确的方式(无状态):

  1. 你告诉服务员:“我是10号桌的,我要一份宫保鸡丁。”

  2. 过了一会,你又说:“我是10号桌的,请给我加一份米饭。”

每次请求都自带身份信息(比如后面会学到的JWT Token),服务器处理完就忘,不保存任何上下文。这样做的好处是系统伸缩性极强,任何一台服务器都能处理你的请求。


总结一下:
RESTful API 就是用 名词URL 定位资源,用 HTTP动词 描述操作,用 JSON 传输数据,并且每次请求都是无状态的。

Comments (0)

Continue Reading

JWT (JSON Web Token) 简介

Published Jul 17, 2025

Docker & Container 基础知识

Published Jul 17, 2025