• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

RestFul命名实践

武飞扬头像
godsolio
帮助1

背景

为什么你的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
系列文章
更多 icon
同类精品
更多 icon
继续加载