背景
在项目接口设计过程中,团队成员对于接口 URL 命名风格存在分歧:是否应采用 camelCase
(驼峰命名)?对此展开了讨论。
结论
接口 URL 不应使用驼峰命名(camelCase),推荐统一采用 小写 + 中划线(kebab-case) 风格,或根据项目团队的规范选择使用下划线(snake_case),但应保持一致性。
理由分析
1. URL 是大小写敏感的
/userInfo
与/userinfo
被视为不同资源,易引发错误。- 驼峰风格加剧了大小写混淆的风险。
2. REST 社区与业界共识
- 主流 RESTful API 设计(GitHub、Stripe、Twitter 等)均采用 kebab-case。
- 阿里巴巴《Java 开发手册》、Google API 设计文档均推荐使用中划线分词。
3. 可读性更优
user-info
比userInfo
更直观显示单词边界。- 相比下划线
_
,中划线-
在浏览器中的可视效果更明显、更美观。
4. SEO 更友好
- 搜索引擎(如 Google)明确推荐使用中划线分隔词,避免使用下划线。
- kebab-case 能被识别为多个关键词,有利于网页检索。
5. 为什么不推荐使用下划线(snake_case)
虽然下划线在数据库字段命名中很常见,但在 URL 中使用存在如下问题:
✅ 不利于 SEO
Google 明确表示:中划线被视为“词边界”,下划线不会;即/user-info
会被当作两个词,而/user_info
会被当作一个词。✅ 可读性差
下划线在链接中经常被渲染为“不可见”或与底线混淆(尤其在下划线带超链接时),不如中划线易于识别。✅ 不符合社区主流
主流框架和 API 设计规范文档均推荐使用 kebab-case,而非 snake_case。
6. 阿里巴巴 Java 开发手册的推荐
根据阿里巴巴的 Java 开发手册(《中册》)规定:
- URL 地址命名风格推荐使用下划线分隔单词,并且全部小写。
- 示例:
/query_user_info
、/register_device_token
。
阿里规范与社区主流差异
- 阿里规范:推荐使用下划线(snake_case)。
- RESTful API 规范:社区主流(例如 GitHub、Stripe)推荐使用中划线(kebab-case)。
这两者的差异反映了不同技术社区和团队的偏好,而在具体项目中,选择遵循哪种规范应考虑团队需求及一致性。
7. 统一风格提升可维护性
为了避免不同风格的混杂,建议根据项目需求选择一种命名风格,并在整个项目中保持一致。
场景 | 命名风格 |
---|---|
URL 路径 | kebab-case / snake_case(根据项目规范选择) |
JSON 字段名 | camelCase |
数据库字段 | snake_case |
常量/枚举 | UPPER_CASE |
不推荐的命名风格比较
风格 | 是否推荐 | 原因简述 |
---|---|---|
camelCase |
❌ 不推荐 | 易混淆、大小写敏感 |
snake_case |
✅ 推荐(阿里规范) | 适用于数据库,但对 URL 不太友好 |
kebab-case |
✅ 推荐(REST 社区主流) | SEO 友好、可读性好、符合行业趋势 |
推荐阅读与参考资料
总结
URL 是接口设计中面向外部的重要部分,命名风格应符合通用标准。为了减少歧义、提升可维护性、增强可读性,推荐统一使用 kebab-case 风格定义接口 URL,或者根据团队的具体要求选择下划线(snake_case)风格,但需保持一致性,避免混合使用。