无国籍
来自客户端的每个请求都必须包含服务器处理请求所需的所有信息。服务器不应在请求之间存储有关客户端状态的任何信息,从而使 API无状态。这个原则允许更好的可扩展性和更容易的维护。
客户端-服务器架构
REST API 基于客户端-服务器架构,其中客户端负责用户界面,服务器负责数据存储和处理。这种关注点分离可以提高灵活性、可伸缩性和可维护性。
可缓存性
为了优化性能,REST API 应该支持缓存。来自服务器的响应应该表明它们是否可以被缓存,以便客户端可以在适当的时候重用缓存的响应。这减少了服务器上的负载并提高了整体性能。
分层系统
REST API 应该使用分层架构构建,其中每一层执行特定功能。这种关注点分离使得随着时间的推移维护和发展系统变得更加容易。例如,API 可能具有安全层、业务逻辑层和数据访问层。
统一接口
REST API 应该具有一致且统一的接口,这可以简化其使用并使其更加直观。这涉及使用标准 HTTP 方法、明确的资源命名约定以及提供描述性错误消息。
按需代码(可选)
虽然并不总是实现,但 REST API 可以支持通过可下载代码(例如 JavaScript)扩展客户端功能的能力。此功能在特定场景中可能很有用,但不是 REST API 的强制要求。
幂等性
幂等操作是那些可以多次执行而不改变初始应用程序之外的结果的操作。在 REST API 的上下文中,GET、PUT 和 DELETE 方法应该是幂等的,以确保重复请求与单个请求具有相同的效果。
资源嵌套
在某些情况下,将资源嵌套在其他资源中以表示关系是有意义的。例如,您可以使用类似 /posts/123/comments 的 URL 表示用户对博客文章的评论。谨慎使用嵌套,仅当它反映数据的自然层次结构时才使用。
过滤、排序和搜索
除了基本的过滤和排序之外,还可以考虑为您的 API 实现更高级的搜索功能,例如全文搜索或复杂查询。这允许客户端快速定位和检索相关资源。