我有两个api端点
[HttpGet("/items/{id:guid}")]
public IActionResult GetItemById(Guid id)
{
[HttpGet("/items/{code}")]
public IActionResult GetItemByCode(string code)
{
Swagger似乎可以毫无问题地处理这些问题。我查看了OpenAPI json文件,发现guid端点在设置为“ uuid”的参数对象中具有format属性。代码端点根本没有设置此属性。两者的类型参数都设置为“字符串”,因此我相信这是将它们区别开来的方法。我想将此json文件导入到Azure API Gateway,但失败了,因为它将它们视为相同的签名。这是否意味着Azure不支持参数对象的format属性?它是v3规范的一部分吗?在不久的将来,Azure是否有为此计划提供支持的任何计划?正在尝试查找有关此的任何信息,但找不到任何详细信息。
答案 0 :(得分:1)
是的,从APIM的角度来看,这些是相同的。我真的不确定OpenAPI规范将如何处理这些规范,请确保您可以编写这样的规范文件,但这尚不清楚。我找不到关于此的任何信息。OpenAPIv2。
这些规范在运行时也有问题。一个人必须对参数类型有一个相当全面的优先级顺序才能使其以某种方式起作用,我认为这可能无法满足所有要求。想象有一个电话:
/ items / 9c850ade-c083-4f66-b03d-3fdecffb8bd0
它应该匹配id:guid还是code:string?目前尚不清楚。因此,最好避免此类歧义。