【问题标题】:unknown error swagger 2.0 path ref issue未知错误招摇 2.0 路径参考问题
【发布时间】:2018-01-02 14:37:22
【问题描述】:

我正在尝试运行以下代码:

/v1/test/{id}:
    x-swagger-router-controller: Security
    get:
      operationId: test      
      description: "Test jwt middleware and multiple paths"      
      security:
        - JWT: []
      parameters:
      - name: "id"
        in: "path"
        description: "ID of user"
        required: true
        type: "integer"      
      responses:
        "200":
          description: "Success"
          schema:
            $ref: "#/definitions/LoginSuccess"
        "403":
          description: "Access Denied"
          schema:
            $ref: "#/definitions/Error"  
/v2/test/{id}:            
      $ref: "#/paths/~1v1~1test~1{id}"

但我收到以下错误:

API 错误:

#/paths/~1v2~1test~1{id}/$ref: 路径无法解析:

/paths/~1v1~1test~1{id}

我该如何解决这个问题?

【问题讨论】:

  • 路径$reference 看起来有效。哪个工具会产生此错误?
  • 在不相关的注释上,您需要删除operationId。否则解析完路径$ref后,两个操作都以相同的operationId结束,这是无效的。
  • 这是我启动它时得到的:它在 expressjs 中。 OperationId 将其绑定到要运行的方法。如果我删除它如何执行该功能?
  • 回复operationId:不知道,只是指出规范错误。看起来您使用的工具不支持路径项下的$ref。如果您使用的是github.com/swagger-api/swagger-node,请在 GitHub 上打开一个问题。同时,您可能需要将路径 $ref 替换为内联路径定义。
  • 最后我以不同的方式接近,只是在路径中添加了一个路径模板 {apiversion} 并实现了相同的功能,即允许 api/v1 api/v2 等在没有新的 v2 方法。谢谢

标签: path yaml swagger


【解决方案1】:

在这种特殊情况下,我真正需要实现的是能够对我的 API 进行版本控制,尤其是在并非所有方法都有更新版本的情况下,例如 /api/v1/method 和 /api/v2/method 仍然存在用于相同的功能。

我就这样解决了

parameters:
       - name: version
         in: path
         description: Version number of API
         required: true
         type: string
         enum: &APIVERSION
           - v1
           - v2

这样,v1 和 v2 都去了同一个地方。我还可以将 v3 等添加到枚举中,这些枚举可以通过不同的路径作为枚举重用:*APIVERSION

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2021-07-08
    • 2018-12-01
    • 2016-04-04
    • 1970-01-01
    • 2021-01-05
    • 2019-05-21
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多