Azure API Gateway - 支持 OpenAPI 格式属性

Posted

技术标签:

【中文标题】Azure API Gateway - 支持 OpenAPI 格式属性【英文标题】:Azure API Gateway - support for OpenAPI format property 【发布时间】:2019-04-04 22:17:33 【问题描述】:

我有两个 api 端点

[HttpGet("/items/id:guid")]
public IActionResult GetItemById(Guid id)


[HttpGet("/items/code")]
public IActionResult GetItemByCode(string code)

Swagger 似乎处理那些没有任何问题的人。我查看了 OpenAPI json 文件并注意到 guid 端点在参数对象中有一个格式属性设置为“uuid”。代码端点根本没有设置此属性。两者的类型参数都设置为“字符串”,所以我相信这就是大摇大摆区分它们的方式。我想将此 json 文件导入 Azure API Gateway,但它失败了,因为它将它们都视为相同的签名。这是否意味着 Azure 不支持参数对象的格式属性?它是 v3 规范的一部分吗?是否有计划在最近的将来在 Azure 中支持此功能?正在尝试查找有关此的任何信息,但找不到任何详细信息。

【问题讨论】:

【参考方案1】:

是的,从 APIM 的角度来看,它们是相同的。我真的不确定 OpenAPI 规范将如何处理这些,当然你可以编写这样的规范文件,但这意味着什么还不清楚。我找不到任何关于 OpenAPIv2 的消息。

这样的规范在运行时也是有问题的。必须对参数类型有一个非常全面的优先顺序才能使其以某种方式工作,我觉得这可能无法满足所有人。想象一下有人打电话:

/items/9c850ade-c083-4f66-b03d-3fdecffb8bd0

它应该匹配 id:guid 还是 code:string?这还不是很清楚。所以最好避免这样的歧义。

【讨论】:

以上是关于Azure API Gateway - 支持 OpenAPI 格式属性的主要内容,如果未能解决你的问题,请参考以下文章

使用代理集成通过 API Gateway 触发 AWS Lambda

当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?

Amazon API Gateway 和 AWS Lambda 中的错误处理模式

Azure上通过haproxy实现APP Gateway或WAF的http跳转https

Azure上通过haproxy实现APP Gateway或WAF的http跳转https

Azure Application Gateway对后端 Web App 进行负载均衡