验证的开放 API 规范无法上传到 Azure API 管理

问题描述 投票:0回答:2

我正在尝试在我的 azure api 管理服务上导入与 https://github.com/ccouzens/keycloak-openapi/blob/master/keycloak/9.0.json 类似的 OpenAPI 规范 json。 我验证了 openapi.json 的版本 http://editor.swagger.io/ 。 当我尝试使用上述 json 创建 API 资源时,出现错误:

{"error":{"code":"ValidationError","message":"One or more fields contain incorrect values:","details":[{"code":"ValidationError","target":"templateParameters","message":"All template parameters used in the UriTemplate must be defined in the Operation, and vice-versa."}]}}

请帮忙

azure openapi azure-api-management
2个回答
3
投票

发现问题。 json API 规范 file 具有多个 API URL,其中 {id} 在同一 URL 中出现两次,这是 azure 的 API 管理不允许的,并且两个路径参数没有“参数”定义。 例如,参考下面的URL和api规范中相应的参数定义file

/{realm}/client-scopes/{id}/protocol-mappers/models/{id}

 "parameters": [
        {
          "in": "path",
          "name": "realm",
          "description": "realm name (not id!)",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        },
        {
          "in": "path",
          "name": "id",
          "description": "Mapper id",
          "required": true,
          "schema": {
            "type": "string"
          },
          "style": "simple"
        }
      ]

swagger 编辑器不考虑这些约束违规

因此,总而言之,要在 Azure api 管理服务上上传开放 API 规范,您需要考虑以下约束以及 azure 文档中存在的约束

  1. 不能有两个具有相同标识字符串的路径参数
  2. 所有路径参数都应该在规范 json 中有一个“参数”定义

PS:我的 api 规范 json 与 json file 非常相似,但并不相同。它还有其他问题,例如带有请求正文的删除 API。


0
投票

感谢您费心提出解决方案 - 它也给了我问题的答案!

© www.soinside.com 2019 - 2024. All rights reserved.