news 2026/4/25 10:40:05

URL 设计规范

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
URL 设计规范

RESTful API 中的 URL 设计规范(最佳实践)

URL(Uniform Resource Identifier)是 RESTful API 的核心入口,良好的 URL 设计能让 API直观、可预测、易维护。以下是业界广泛认可的 URL 设计规范和最佳实践。

1. 核心原则总结(口诀)

“资源用名词、复数形式、层级清晰、动词靠方法、版本要明确、查询用参数”

2. 详细规范表
规范类别推荐做法示例不推荐示例原因说明
资源命名使用名词表示资源(避免动词)/users/articles/getUsers/createArticle动词应由 HTTP 方法表达
复数 vs 单数统一使用复数形式(业界主流约定)/users/orders/user/order更一致,便于集合和单个资源统一处理
层级结构用路径表示资源的从属关系(嵌套不超过 2-3 层)/users/123/orders/getUserOrders?id=123更直观,体现资源层次
子资源操作子资源用嵌套路径/articles/123/comments/comments?articleId=123更 RESTful(可选,视场景)
动作非资源时如果是动作而非资源,用动词放在路径末尾(谨慎使用)/orders/123/cancel大多数情况应转为资源设计只在无法建模为资源时使用
版本控制在 URL 中显式指定版本(最常见方式)/v1/users/api/v2/articles无版本或只用 Header更直观,便于文档和客户端切换
大小写与分隔符全小写,用连字符 -分隔(kebab-case)/blog-posts/user-profiles/blogPosts(camelCase)URL 区分大小写,小写更安全、可读性更好
文件扩展名避免在 URL 中使用 .json、.xml 等扩展名/users/123/users/123.json内容协商用 Accept Header 处理
ID 命名{id}占位符(文档中),实际用具体 ID/users/{id}(文档)
/users/123(实际)
/users/userId=123更简洁
查询参数用于过滤、排序、分页、搜索等/articles?tag=rest&page=2&limit=20&sort=created_at:desc把参数放路径查询参数专为此设计
避免过深嵌套嵌套不超过 3 层,过多时用查询参数或扁平化/users/123/orders/456/items(可接受)嵌套 5 层以上过深 URL 复杂、不易维护
3. 常见操作的 URL 示例(用户 + 文章 + 评论)
操作推荐 URLHTTP 方法说明
获取用户列表GET /usersGET支持查询参数过滤
获取单个用户GET /users/123GET
创建用户POST /usersPOST
更新用户(全量)PUT /users/123PUT
部分更新用户PATCH /users/123PATCH
删除用户DELETE /users/123DELETE
获取用户的所有订单GET /users/123/ordersGET嵌套子资源
获取某篇文章的所有评论GET /articles/456/commentsGET
为文章添加评论POST /articles/456/commentsPOST
搜索文章GET /articles/search?q=restfulGET或直接用/articles?q=restful
获取当前登录用户信息GET /meGET /users/meGET常见特殊路径
4. 特殊场景处理建议
场景推荐设计方式示例
分页用查询参数pagelimitoffsetlimit/articles?page=3&limit=20
排序sort参数,支持字段+方向/users?sort=-created_at,name
过滤用查询参数,直接字段名或特定前缀/orders?status=paid&min_amount=100
批量操作单独路径(非标准 REST,但实用)POST /users/batch-delete(Body: [1,2,3])
文件上传用资源路径 + multipart/form-dataPOST /users/123/avatar
触发动作(如支付)优先建模为资源(如创建支付订单),否则用动词路径POST /orders/123/pay(谨慎使用)
5. 常见反模式(避免)
  • 把 HTTP 方法放进 URL:/users/getAll/users/addUser
  • 混用单复数:项目中既有/user又有/articles
  • 过长 URL:嵌套太多层或参数太多
  • 用查询参数做主要操作:GET /users?action=delete&id=123(应为 DELETE)
  • 无版本控制,导致旧客户端无法兼容
6. 总结

优秀的 URL 设计应该做到:

  • 一眼看出资源和关系
  • 无需文档也能猜到大部分接口
  • 前后一致、易于扩展

遵循以上规范,你的 RESTful API 将更专业、更易被开发者接受和使用。

如果你想看具体框架(如 Express、Spring Boot、FastAPI)的路由实现示例,或者某个复杂场景的 URL 设计讨论,随时告诉我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 7:32:18

RESTful API 请求和响应格式

RESTful API 的请求和响应格式详解 在 RESTful API 中,请求和响应的格式设计直接影响 API 的易用性、一致性和可维护性。优秀的格式规范能让前后端开发者快速理解接口行为,减少沟通成本。 1. 总体原则 内容类型统一:几乎全部使用 JSON&…

作者头像 李华
网站建设 2026/4/19 8:37:50

Turbo Editor完全攻略:从零开始的移动文本编辑指南

Turbo Editor完全攻略:从零开始的移动文本编辑指南 【免费下载链接】turbo-editor Simple and powerful File Editor for Android. All is licensed under the GPLv3 license. 项目地址: https://gitcode.com/gh_mirrors/tu/turbo-editor 你是否曾经在通勤路…

作者头像 李华
网站建设 2026/4/21 15:52:29

RESTful API 实际应用

RESTful API 的实际应用已经无处不在!从你每天用的手机 App 到大型电商平台,再到 AI 服务,几乎所有现代 Web 和移动应用都依赖 RESTful API 来实现前后端分离、数据交互和第三方集成。 下面用真实场景、流行案例和项目示例,带你看…

作者头像 李华
网站建设 2026/4/23 14:46:16

RESTful API 实践

RESTful API 实践指南:从零到上手一个完整项目 现在我们从理论转向真实实践!下面一步步带你实现一个简单的 TODO 任务管理 RESTful API(经典入门项目),支持增删改查、分页、认证等生产级特性。你可以选择 Node.js (Ex…

作者头像 李华
网站建设 2026/4/21 10:20:27

学术资源获取困境如何解决?Sci-Hub X Now终极方案详解

学术资源获取困境如何解决?Sci-Hub X Now终极方案详解 【免费下载链接】sci-hub-now 项目地址: https://gitcode.com/gh_mirrors/sc/sci-hub-now 还在为无法访问付费学术论文而苦恼吗?面对高昂的订阅费用和复杂的机构认证流程,无数研…

作者头像 李华
网站建设 2026/4/18 9:09:30

革命性集群自动化部署实战指南:从零构建企业级服务器矩阵

革命性集群自动化部署实战指南:从零构建企业级服务器矩阵 【免费下载链接】panel 耗子面板 - GO 开发的轻量 Linux 面板 项目地址: https://gitcode.com/GitHub_Trending/pane/panel 🚀 在数字化转型浪潮中,企业运维团队正面临前所未有…

作者头像 李华