REST 设计原则
KWS 2023年3月13日
- 统一接口。无论请求来自何处,对同一资源发出的所有 API 请求都应该看起来相同。REST API 应确保同一条数据(例如用户的姓名或电子邮件地址)仅属于一个统一资源标识符 (URI)。资源不应过大,但应包含客户可能需要的每一条信息。
- 客户端/服务器解耦。在 REST API 设计中,客户端和服务器应用程序必须彼此完全独立。客户端应用程序只需知道所请求资源的 URI 即可; 它不能以任何其他方式与服务器应用程序交互。同样,除了通过 HTTP 将客户端应用程序传递到所请求的数据外,服务器应用程序不应修改客户端应用程序。
- 无状态。REST API 是无状态的,这意味着每个请求都需要包含处理它所需的全部信息。换句话说,REST API 不需要任何服务器端会话。不允许服务器应用程序存储与客户端请求相关的任何数据。
- 可缓存性。如果可能,资源应该可以在客户端或服务器端缓存。服务器响应还需要包含有关是否允许对交付的资源进行缓存的信息。目标是提高客户端的性能,同时增强服务器端的可扩展性。
- 分层系统架构。在 REST API 中,调用和响应都会经过多个不同的层。根据经验,请不要将客户端和服务器应用程序直接相互连接。通信环路中可能包含多个不同的中介服务器。需要设计 REST API,让客户端和服务器都无法判断它是与最终应用程序还是中介服务器进行通信。
- 按需编码(可选)。REST API 通常发送静态资源,但在某些情况下,响应也可以包含可执行代码(例如 Java 小程序)。在这些情况下,代码只应按需运行。