我有2个通过Azure Functions实现的GET终结点
/products/{productId}
:通过id向我获取产品/products/status
:获取产品集合的某些“状态”。进行GET调用总是会在“通过ID获取”功能中结束。
如何使这2个显式端点不将“状态”视为id值?我的印象是,如果一条路线与uri相匹配,那么它将具有优先权。
与这个问题有关-https://github.com/MicrosoftDocs/azure-docs/issues/11755
不能对Guid ID使用Route约束。
/products/{productId:guid}
消除了函数调用的歧义,但未能将值绑定到参数。
答案 0 :(得分:1)
无法将值绑定到参数
已跟踪issue,但尚未解决。
Route Constraints允许在HttpTrigger路由属性上为查询字符串参数指定数据类型。这些约束仅用于匹配路线。 使用绑定参数时,数据类型将转换为字符串。
因此,如果您使用git commit --allow-empty -m "foo"
接受输入参数,则会遇到错误Guid productId
。
解决方法是将Guid接受为字符串,如果需要Guid对象,则可以使用Invalid cast from 'System.String' to 'System.Guid'
。
Guid.Parse(productId)