惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Last Week in AI
Last Week in AI
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
宝玉的分享
宝玉的分享
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园 - 聂微东
S
SegmentFault 最新的问题
博客园 - 司徒正美
罗磊的独立博客
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
小众软件
小众软件
Jina AI
Jina AI

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
我的 Restful API 规范
微信公众号 · 2023-12-07 · via 陈少文的网站

主要用来规范自己写的 API,也是为了让 LLM 更好理解我的 API。

1. Domain

  • 尽量单独使用一个域名,例如 api.example.com

2. Path

  • 统一使用小写字母。
  • 不用包含 /api 前缀。
  • 不要包含扩展名。
  • / 不要出现在末尾。 对于 Restful API,/ 用来划分资源层级,末尾的 / 会导致混淆。
  • 使用带版本的路径 /v1
  • 使用复数形式,例如 /v1/users
  • 使用 - 代替 _ ,提高可读性,使用 /v1/mail-tasks 而不是 /v1/mail_tasks

3. Query

  • 字段用小写的蛇形命名法,例如 ?first_name=abc
  • query 的总长度应该在 2000 个字符以内。
  • POST 方法不得使用 query 参数。
  • 数组参数使用逗号分隔,例如 ?ids=1,2,3

4. Method

有很多国内团队,因为各种原因仅使用 GET 和 POST 方法,甚至只使用 POST 方法。在此仅按照语义来说明各个方法的用途。

  • GET:获取资源,幂等,需要注意的是,GET 方法不应该修改资源,主要注意缓存问题。
  • POST:创建资源,非幂等。
  • PUT:更新资源,提供完整属性,幂等。
  • PATCH:更新资源,提供局部属性,不幂等。
  • DELETE:删除资源,幂等。
  • HEAD:获取资源的元数据,幂等。
  • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的,幂等。

5. Response

  • 使用 JSON 格式。
  • 使用 HTTP 状态码来表示请求状态。
  • 使用 code 来表示业务状态码。
  • 使用 message 来表示业务状态信息。
  • 使用 data 来表示业务数据。
    • total 表示数据总数。
    • page 表示当前页码。
    • page_size 表示每页数据量。
    • list 表示数据列表。

6. Endpoint

  • 使用名词而不是动词,例如 /v1/send-mail-tasks 或者 /v1/mails 而不是 /v1/send-mails

  • 资源中不要包含动词,举个反例 POST /accounts/1/transfer/500/to/2

应该用名词来表示资源,动词应该用 HTTP 方法来表示。

1
2
3
4
5
POST /accounts/1/transfers
{
  "to_account_id": 2,
  "amount": 500
}

7. 参考