RestFul命名实践
背景
为什么你的RestFul接口看起来不那么好看,甚至有点膈应?大部分人自认自己的接口是restful风格,可事实上一点都不restful。
经常看到有同学定义以下命名接口:
POST /serviceX/createXXX
POST /serviceX/getXXX
POST /serviceX/createXXXByIds
常见问题:
- 不管什么接口都用POST,破坏了restful中使用httpMethod作为动词语义的最佳实践
- httpMethod已经使用了POST,又在路径中出现create/update等动词
- 参数的语义直接通过ByXXX定义,看不出来参数对于“数据实体”的实际意义
基本规范
Http Method
充分使用http method的语义已经可以覆盖99%的命名场景
- POST - 创建(当然也有部分复杂请求用POST,极特殊情况可以例外)
- PUT - 更新,也可以表示追加
- PATCH - 更新某条记录的某个属性
- DELETE - 删除
- GET - 查询
- HEAD - 查看简要信息
- OPTION - 查看备选信息 (一般很少用)
URI
全称:统一资源标志符 (Uniform Resource Identifier)。
在HTTP语义中原本就是用于定位资源的(所以说uri中为什么不要出现动词,不然语义很奇怪)
命名场景及建议
主谓宾结构
A向B转账:追加一个"转账"
PUT /serviceX/transfer/{sourceAccountId}/to/{targetAccountId}
Content-Type: application/json
{
"amount": 123124,
"for": "stock"
// ... other
}
拒绝某条审批
PUT /serviceX/approval/{approverUserId}/denial/{instanceId}
Content-Type: application/json
{
"amount": 123124,
"for": "stock"
// ... other
}
精确查询
查询某个用户信息
GET /serviceX/user/{id}
查询用户职级
GET /serviceX/user/{id}/rank
关联查询
查询某个用户的支付记录
GET /serviceX/user/{id}/payments?startDate=x&endDate=y
条件查询list
查询操作日志
GET /serviceX/operation/logs?operator=xxx&date=2022-11-11&keywords=yyy&start=0&limit=100
创建实体
创建用户
POST /serviceX/user
Content-Type: application/json
{
"username": "A",
"phone": "1100...."
// ... other
}
修改实体
修改用户信息
PUT /serviceX/user/{id}
Content-Type: application/json
{
"phone": "1100....",
"age": 22,
// ... other
}
删除实体
DELETE /serviceX/user/{id}
修改实体属性
修改职级
PATCH /serviceX/user/{id}/rank
Content-Type: application/json
{
"from": 1,
"to": 2
}
创建关联记录
创建用户转账记录
POST /serviceX/user/{id}/payments
Content-Type: application/json
[{
"sourceAccount": "AAA",
"targetAccount": "BBB....",
"amount": 123124
// ... other
}]
更新关联记录
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhafbhb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13