当前位置:首页 > 技术分析 > 正文内容

REST:API 设计的最佳实践

ruisui883周前 (04-08)技术分析12

设计良好的 API 是构建高效、可扩展且易于使用系统的关键。无论是构建微服务、移动应用后端,还是公共 API,遵循 REST 原则和行业最佳实践都能帮助您避免常见陷阱。本文将探讨 RESTful API 设计中的核心实践。


1.使用合适的 HTTP 方法

REST 的核心原则之一是正确使用 HTTP 方法(动词)来定义操作:

  • GET:检索资源(例如:GET /users 获取用户列表)。
  • POST:创建新资源(例如:POST /users 创建用户)。
  • PUT:替换整个资源(例如:PUT /users/123 更新用户 123 的所有字段)。
  • PATCH:部分更新资源(例如:PATCH /users/123 仅修改用户 123 的某些字段)。
  • DELETE:删除资源(例如:DELETE /users/123 删除用户 123)。

避免将动作(如 /users/123/activate)硬编码到 URL 中,而应通过 HTTP 方法表达意图。


2.设计清晰的资源命名

  • 使用名词而非动词:资源是实体(如 users、orders),而非动作。
  • 正确:GET /users/123
  • 错误:GET /getUser?id=123
  • 保持 URL 层次化:反映资源关系。
  • 例如:GET /users/123/orders 获取用户 123 的所有订单。
  • 使用小写和连字符(kebab-case):提高可读性。
  • 正确:/product-categories
  • 避免:/productCategories 或 /product_categories

3.版本控制

API 变更是不可避免的,版本控制能防止破坏现有客户端:

  • URL 路径:/api/v1/users
  • HTTP 头:通过 Accept 头指定版本(如 Accept: application/vnd.myapi.v1+json)。
  • 约定:无论选择哪种方式,确保一致性并明确记录。

4.过滤、分页与排序

避免返回海量数据,支持客户端按需获取:

  • 过滤:GET /users?role=admin
  • 分页:GET /users?page=2&limit=50
  • 排序:GET /users?sort=-created_at,username(按创建时间降序,用户名升序)

5.响应标准化

  • 结构化响应:使用 JSON 并包含状态码、数据或错误信息。
  • json
  • Copy
  • {"status": 200,"data": { "id": 123, "name": "John" },"error": null}
  • HTTP 状态码:合理使用标准状态码(如 200 OK、201 Created、400 Bad Request、404 Not Found)。
  • 错误处理:提供明确的错误消息和文档链接。
  • json
  • Copy
  • {"error": {"code": "invalid_email","message": "Email format is invalid.","documentation": "https://api.example.com/docs/errors#invalid_email"}}

6.支持 HATEOAS

HATEOAS(超媒体作为应用状态引擎)允许 API 通过响应中的链接引导客户端:

json

Copy

{"id": 123,"name": "John","_links": {"self": { "href": "/users/123" },"orders": { "href": "/users/123/orders" }}}

这使客户端能动态发现可用操作,减少硬编码依赖。


7.安全性

  • HTTPS:始终使用 HTTPS 加密通信。
  • 认证与授权:采用 OAuth 2.0、JWT 等标准协议。
  • 速率限制:防止滥用(如通过 X-RateLimit-Limit 和 X-RateLimit-Remaining 头)。

8.缓存优化

  • 利用 HTTP 缓存头:如 Cache-Control、ETag 和 Last-Modified。
  • 条件请求:通过 If-Modified-Since 或 If-None-Match 减少不必要的数据传输。

9.文档与开发者体验

  • 提供交互式文档:使用 OpenAPI (Swagger) 或 Postman 生成文档。
  • 代码示例:包含常见语言的请求示例(如 cURL、Python、JavaScript)。
  • 沙箱环境:允许开发者在不影响生产环境的情况下测试 API。

10.保持向后兼容

  • 避免破坏性变更:新增字段通常安全,但移除或重命名字段需谨慎。
  • 弃用策略:通过头信息或文档提前通知旧版本的淘汰计划。

总结

遵循 REST 最佳实践不仅能提升 API 的可维护性和扩展性,还能改善开发者体验。始终从客户端角度思考,确保 API 直观、一致且高效。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3345.html

标签: kebab-case
分享给朋友:

“REST:API 设计的最佳实践” 的相关文章

培训机构财务及缴费管理系统

学校收费软件是专门为学校财务量身打造的用于灵活性收取学生费用,智能化管理学生缴欠费信息的一款智能系统。1.灵活性全面的学生档案(学籍)信息化管理要计费,一定要有学生信息。所以就算是财务的收费软件,关于学生的档案资料(学籍)管理,同样是计费系统软件不可缺少的部分。档案资料属性,全面、灵活性、能自定义。...

10分钟搞定gitlab-ci自动化部署

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布过程,如果每次都手动操作这一步骤就会浪费时间,效率低下。所以就有了持续集成。准备事项请提前安装以下软...

30 个纯 HTML5 实现的游戏

浏览器和 JavaScript 的功能逐年不断的变强变大。曾几何时,任何类型的游戏都需要Flash。但随着 HTML5 发展,HTML5 + WebGL 游戏式就慢慢占领着这个舞台。以下是30款流行的游戏,它们可以在所有现代浏览器中运行,并且只使用web技术构建。1. HexGL地址:http://...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条件动态地过滤数据,使数据分析和报告制作变得更加高效和准确。本文将详细介绍FILTER函数的用法,并提...

Python中的11 种数组算法

1. 创建数组 创建数组意味着留出一个连续的内存块来存储相同类型的元素。在大多数语言中,您可以在创建数组时指定数组的大小。假设您正在书架上整理一组书籍,并且您需要为正好 10 本书预留空间。功能架上的每个空间都对应于数组中的一个索引。# Example in Python arr = [1, 2,...

基于 vue3.0 小程序拖拽定制

今天给大家分享一个使用Vue3编写的自由DIY小程序页面。mbDIY 一款基于vue3.x构建的可拖拽定制小程序模板。支持新建页面、自由拖拽模块、复制/移动、自定义模块样式等功能。整个项目分为页面、模块、控件三大部分。模块里面的组件可拖拽至主面板区,编辑后保存即可预览效果。快速安装# 克隆项目 gi...