Azure API 网关 - 支持 OpenAPI 格式 属性

Azure API Gateway - support for OpenAPI format property

我有两个 api 端点

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

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

Swagger 似乎可以毫无问题地处理这些问题。我查看了 OpenAPI json 文件并注意到 guid 端点在参数对象中的格式 属性 设置为 "uuid"。代码端点根本没有此 属性 设置。两者的类型参数都设置为 "string",所以我相信这就是 swagger 区分它们的方式。我想将此 json 文件导入到 Azure API 网关,但它失败了,因为它将它们视为相同的签名。是不是说Azure不支持参数对象的格式属性?它是 v3 规范的一部分吗?是否有任何计划在最近的将来在 Azure 中支持此功能?试图寻找与此相关的任何信息,但找不到任何详细信息。

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

此类规范在运行时也存在问题。必须对参数类型有一个相当全面的优先顺序才能使其以某种方式工作,我觉得这可能无法满足所有人。假设打了一个电话:

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

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