RESTful API 命名指南

16 篇文章 0 订阅

RESTful API 又叫 Web API, REST 是 representational state transfer 的简写。RESTful API 使用 HTTP 协议的 GET, PUT, POST, PATCH 等操作来定义程序接口。由于这四个操作在 HTTP 协议都有特定的含义,所以我们应该遵循它们的习惯性用法。

  • GET 用来查询
  • PUT 来修改资源
  • POST 用来增加资源或者执行控制命令
  • DELETE 用来删除某个资源
  • PATCH 用来改变资源的某个属性
    在实际应用中由于只改变资源某个属性的情形较少,所以很多情况下会直接使用 PUT 直接修改资源

这些操作都是针对资源 (resource) 的,为了让用户能够直观准确地理解 API 的使用,我们应该遵循以下约定:

资源名称使用小写

所有 API 都会操作某个资源,资源名称应该是小写的复数形式,比如 students。

  • 如果是两个单词组成的资源名称,我们使用减号 “-” 来连接这个两个单词,比如 student schools 写作 student-schools。
  • 如果是资源的子集则子集放在斜线后
示例
# 查询所有学生
GET /students
# 查询id=996的学生
GET /students/996
# 查询男生
GET /students/male
# 查询年纪15岁男生
GET /students/male?age=15
# 查询学生的学校
GET /student-schools

# 增加学生
POST /students
# 修改id=996的学生的信息
PUT /student/996

使用 JSON 来定义 body 信息

比如在增加学生时把学生定义为

{
 "name": "Tom",
 "gender": "male".
 "age": 15
}

然后使用 POST 命令来增加资源

POST /students/

使用 POST 来执行控制命令

POST 除了可以用来增加资源,还被用来针对资源执行命令,比如:

# 激活ID=996的名声账号
POST /student/activate/996

上例中 activate 就是控制命令

使用 2xx 表示操作执行成功

这是 W3C 的国际标准: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

比如 200 表示成功,201 表示创建成功等。

使用 4xx 表示操作出现错误

按照 W3C 国际标准应该使用 4xx 返回码表示各种错误,而不应该所有的返回都用 200,然后通过返回消息来找到错误。4xx 码都有特定的含义,比如注明的 404 就表示找不到某个资源。更多的错误码描述可以查看:

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

使用 ProblemDetail 来定义返回错误信息

我们看到很多 API 都是自己定义错误信息的返回格式,其实早有错误格式的工业标准,这就是 RFC 7807 使用Problem Detail 来返回错误信息。

这是它的样子:

// For example, an HTTP response carrying JSON problem details:

//  HTTP/1.1 403 Forbidden
//  Content-Type: application/problem+json
//  Content-Language: en
{
    "type": "https://example.com/probs/out-of-credit",
    "title": "You do not have enough credit.",
    "detail": "Your current balance is 30, but that costs 50.",
    "instance": "/account/12345/msgs/abc",
    "balance": 30,
    "accounts": ["/account/12345",
                 "/account/67890"]
}

上面的示例中 type, title, detail, instance 是标准选项,balance下面的信息是自定义选项。几乎每种主流编程语言都有支持这个标准的解决方案。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surfirst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值