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

REST:API 设计的最佳实践

ruisui882个月前 (04-08)技术分析16

设计良好的 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 设计的最佳实践” 的相关文章

给大家分享几个漂亮的 Arch Linux 发行版

ArchLinux是一款备受欢迎的、面向技术爱好者和Linux专业人士的发行版。它以其简洁、灵活和高度可定制的特点而闻名,但对于一些人来说,配置和设置ArchLinux可能会有一些挑战。为了方便那些希望快速入门并且喜欢漂亮外观的人,我们想分享几个令人赞叹的ArchLinux发行版,它们提供了美观的界...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...

Gemini应用在Android上广泛推出2.0闪电模式切换器

#头条精品计划# 快速导读谷歌(搜索)应用的测试频道在安卓设备的双子应用中推出了2.0闪电实验功能,现已向稳定用户开放。双子应用通过谷歌应用运行,目前推出的15.50版本中,用户可通过模型选择器体验不同选项,包括1.5专业版、1.5闪电版和2.0闪电实验版。2.0闪电实验模型提供了更快的响应速度和优...

Python中的11 种数组算法

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