REST API 是一种常见的 Web API 设计方式,它围绕资源来组织,例如用户、题目或订单。每个资源都有一个 URL,而 GET、POST、PATCH 和 DELETE 等 HTTP 方法则告诉服务器,客户端想执行什么操作。
REST 是 Representational State Transfer 的缩写,通常译为“表述性状态转移”。在实际使用中,客户端发送 HTTP 请求,服务器返回某个资源的表述形式,而且每个请求本身都应该是可理解的。很多 REST API 会返回 JSON,但仅仅使用 JSON 并不意味着这个 API 就是 RESTful。
REST API 的含义:从资源来理解
理解 REST 最快的方法,是先把它看成“名词”的设计,而不是“动词”的设计。
如果你的系统里有题目、学生和作答记录,那么它们都可以是资源。面向资源的 API 往往会使用像 /api/problems/42 或 /api/attempts/9001 这样的 URL。
然后由 HTTP 方法来说明具体发生了什么操作:
GET读取资源POST创建新资源PUT替换整个资源PATCH更新资源的一部分DELETE删除资源
这种分工让 REST 很容易快速读懂。URL 说明你在处理什么,方法说明你想做什么。
REST API 请求是如何工作的
在典型流程中,浏览器、移动应用或另一个服务会向服务器发送请求。请求中包含 URL、HTTP 方法、可选的请求头,有时还会带上请求体。
服务器读取请求,执行相应操作,然后返回响应。响应通常会包含状态码,例如 200 OK、201 Created 或 404 Not Found,以及描述结果的数据。
其中一个重要条件是无状态性。在 REST 中,每个请求都应该包含处理该请求所需的上下文信息。这并不表示服务器完全不存储数据,而是说服务器不应该依赖之前请求留下的隐藏会话状态,才能理解当前请求。
REST API 示例:一个数学练习应用
假设一个数学练习应用保存了代数题目和学生的作答记录。
要读取第 题,客户端可能会发送: