【问题标题】:How to define 2 different endpoints for variable path parameter and specific path parameter in swagger如何在 swagger 中为可变路径参数和特定路径参数定义 2 个不同的端点
【发布时间】:2018-08-30 07:57:31
【问题描述】:

我想定义 2 个休息端点:

  1. 在 /a/{id}/c 上发布
  2. 在 /a/b/c 上发布

b 这里是一个特定的关键字。 我需要单独端点的原因是两者的有效负载不同

问题是当我在 /a/b/c 上执行 POST 时,请求将发送到第一个并且由于有效负载不匹配而失败

这可以大摇大摆地完成吗? 有更好的方法吗?

【问题讨论】:

  • /a/{id}/c 与 /a/b/c 有何不同?以不同方式设置端点是个好主意,这样它们就不会重叠
  • @Lesleyvdp /system/{userId}/roles 为特定用户添加角色 /system/batch/roles 为多个用户添加角色 不同的端点应该是什么?
  • 我已经发布了一些澄清的答案。
  • 您使用的是什么服务器框架?看起来它不完全符合要求,因为 OpenAPI Specification 声明 “在匹配 URL 时,具体(非模板)路径将在其模板对应项之前匹配。” 你能发布执行此操作的服务器代码吗?路径匹配?

标签: rest api swagger


【解决方案1】:

根据您的评论,您可以创建两个新的 POST 端点并将它们的功能分开一点。将端点本身的功能分开也使其更易于阅读和使用,因为它立即说明了端点的用途。无论是针对单个用户还是整批用户,但仍然执行相同的操作。例如:

为特定用户添加角色。

POST /system/roles/user/{userid} 

一次性为一批用户添加角色。

POST /system/roles/batch

这对你有用吗?

【讨论】:

  • 这似乎很奇怪,因为用户是系统的一部分,并且角色属于特定用户,并且端点应该在该行上。 /system/roles/user 这表明角色属于系统,角色有用户
  • 我不确定您的设置是什么样的,但这听起来很合理。您可以并且像您所说的那样,应该根据您的项目设置正确地构建它。 /system/user/roles/batch 和 /system/user/{userid}/roles 也是一个选项。
猜你喜欢
  • 1970-01-01
  • 2021-11-14
  • 2022-11-20
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多