news 2026/4/16 17:28:37

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/16 10:16:15

如何免费获取微软Fluent Emoji:1000+专业表情符号全指南

如何免费获取微软Fluent Emoji:1000专业表情符号全指南 【免费下载链接】fluentui-emoji A collection of familiar, friendly, and modern emoji from Microsoft 项目地址: https://gitcode.com/gh_mirrors/fl/fluentui-emoji 想要为你的设计项目注入现代感…

作者头像 李华
网站建设 2026/4/16 11:58:03

Obsidian Text Generator终极指南:3步开启AI写作新时代

在信息爆炸的时代,如何让AI成为你的个人写作助理?Obsidian Text Generator插件正是答案。这款革命性工具将您的知识库与前沿AI技术无缝连接,让创意写作变得前所未有的高效。 【免费下载链接】obsidian-textgenerator-plugin Text generator i…

作者头像 李华
网站建设 2026/4/16 11:57:30

多服务器集群智能部署:现代运维自动化的核心技术突破

多服务器集群智能部署:现代运维自动化的核心技术突破 【免费下载链接】panel 耗子面板 - GO 开发的轻量 Linux 面板 项目地址: https://gitcode.com/GitHub_Trending/pane/panel 在数字化转型浪潮中,企业面临着服务器规模指数级增长的挑战。传统的…

作者头像 李华
网站建设 2026/4/16 13:35:12

浏览器自动化革命:从重复劳动到智能操作的华丽转身

还在为每天重复的网页点击、表单填写而疲惫不堪吗?传统的浏览器操作方式正在被SeleniumBasic浏览器自动化框架彻底颠覆。这个专为VB.Net、VBA和VBScript用户设计的工具,正以惊人的效率改变着我们的工作方式。 【免费下载链接】SeleniumBasic A Selenium …

作者头像 李华
网站建设 2026/4/16 12:00:43

显卡智能管家:3步掌握MacBook性能与续航的完美平衡

你是否注意到MacBook在运行某些应用时风扇突然加速,或者电池续航意外缩短?这往往是因为系统正在不必要地使用高性能独立显卡。对于配备双显卡的MacBook用户而言,如何精准控制显卡切换成为提升使用体验的关键所在。 【免费下载链接】gfxCardSt…

作者头像 李华
网站建设 2026/4/16 11:49:45

Nano Banana Pro画科研插图的正确用法,一定要把握绘图原则和提示词技巧!

Nano Banana Pro强是强,但要想用它画出专业的科研插图,还得费点功夫,下面七哥给出Nano Banano Pro绘图的原则与技巧供大家参考,掌握后,不管在画科研插图上,还是在别的领域绘图都没问题。 四个基本原则: 1、描述具体化 不给它具体的指令,它就只能去猜。比如让它画xxx…

作者头像 李华