背景

在项目接口设计过程中,团队成员对于接口 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-infouserInfo 更直观显示单词边界。
  • 相比下划线 _,中划线 - 在浏览器中的可视效果更明显、更美观。

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)风格,但需保持一致性,避免混合使用。