我正在尝试在我的 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."}]}}
请帮忙
发现问题。 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 文档中存在的约束
PS:我的 api 规范 json 与 json file 非常相似,但并不相同。它还有其他问题,例如带有请求正文的删除 API。
感谢您费心提出解决方案 - 它也给了我问题的答案!