【问题标题】:Create a generic path along with a specific one in openapi v3在 openapi v3 中创建通用路径以及特定路径
【发布时间】:2019-04-07 18:42:15
【问题描述】:

我正在为 node.js 服务器使用 express-openapi npm 模块。为此,我需要使用 openapi v3 创建一个通用 url,例如 /ressources/{action},它将包括所有类型的操作,除了我专门描述为 /ressources/action1 和 /ressources/action2 的一些操作 这里我是如何描述 url 路径中的泛型参数的:

    action:
      name: action
      in: path
      required: true
      schema:
        type: string
        not:
          enum: ['action1', 'action2']

具体的url单独描述,不带路径参数。

问题在于,每当我启动服务器并调用例如 /ressources/action1 时,它都会调用通用 url。我认为通用操作路径参数枚举存在问题。有人可以帮助弄清楚在这种情况下如何将我的请求与适当的 url 正确匹配吗?

我还尝试枚举所有可能的通用操作,如下所示:

    action:
      name: action
      in: path
      required: true
      schema:
        type: string
        enum: ['action3', 'action4', 'action5', 'action6']

但 action1 和 action2 总是匹配通用 url

【问题讨论】:

    标签: node.js swagger openapi


    【解决方案1】:

    两个定义都是正确的,根据OpenAPI Specification

    在匹配 URL 时,具体(非模板化)路径将在其模板化对应路径之前匹配。

    ...

    路径模板匹配

    假设以下路径,具体定义/pets/mine如果使用会先匹配:

    /pets/{petId}
    /pets/mine
    

    服务器总是选择通用 URL 的事实是一个错误(或未实现的功能?)。您应该使用您正在使用的任何服务器框架打开一个问题。

    【讨论】:

    • 问题是两个定义都被选中了,具体的第一个,通用的第二个..这样处理完成了两次..这是它应该表现的样子吗?
    • 不,这是您使用的后端框架的问题。向该框架的供应商开具支持票。
    • 谢谢 Helen,我会创建一张票
    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 2020-08-10
    • 1970-01-01
    • 2020-04-30
    • 2020-08-04
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多