news 2026/6/11 9:03:08

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/6/5 23:17:16

Qwen图像编辑极速方案:新手也能轻松掌握的AI创作神器

想要快速生成高质量AI图像却苦于技术门槛太高?Qwen Image Edit-Rapid-AIO正是为你量身打造的极速创作解决方案!这个开源项目将复杂的AI图像生成技术封装成简单易用的工具,让每个人都能轻松体验从文字到图像的魔法转换。🎨 【免费下…

作者头像 李华
网站建设 2026/6/3 14:29:17

Adobe Downloader完整指南:如何一键获取Adobe全家桶软件

还在为Adobe官网复杂的下载流程而烦恼吗?Adobe Downloader这款macOS专属工具将彻底改变你的下载体验!作为完全开源的项目,它能让你一键获取所有Adobe软件,包括最新的测试版本,无需订阅登录就能享受高速下载。无论你是设…

作者头像 李华
网站建设 2026/6/10 17:13:35

完美滚动条终极指南:打造极致用户体验的完整教程

完美滚动条终极指南:打造极致用户体验的完整教程 【免费下载链接】TW-Elements 项目地址: https://gitcode.com/gh_mirrors/twe/TW-Elements 完美滚动条(Perfect Scrollbar)是一个专为现代网页设计打造的轻量级JavaScript插件&#x…

作者头像 李华
网站建设 2026/6/2 4:43:31

Simulink三相四桥臂逆变器闭环控制仿真探秘

三相四桥臂逆变器闭环控制仿真,LC型滤波器,电阻负载。 在0.1s和0.2s分别进行满载和半载的切换,闭环效果稳定。 matlab/simulink环境 ~今天,我尝试在Simulink中搭建了一个三相四桥臂逆变器的闭环控制仿真模型,主要研究在…

作者头像 李华
网站建设 2026/6/10 15:12:52

Agent-S智能体性能深度解密:从参数调优到业务实战

你是否曾经遇到过这样的困境:精心设计的AI智能体在实际业务中表现时好时坏,有时候响应迅速、结果准确,有时候却"思维混乱"、效率低下?这背后往往隐藏着一个关键因素——温度参数的微妙平衡。今天,让我们一同…

作者头像 李华
网站建设 2026/5/31 23:31:45

Gitee崛起:中国开发者为何正在集体转向本土代码托管平台?

Gitee崛起:中国开发者为何正在集体转向本土代码托管平台? 在全球开源生态中,GitHub长期占据主导地位,但近年来一个显著变化正在中国开发者社区发生。随着国产代码托管平台Gitee的快速成长,越来越多的国内开发者开始将目…

作者头像 李华