路由模板与Azure函数冲突

时间:2018-07-20 15:12:10

标签: c# azure azure-functions

我有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}消除了函数调用的歧义,但未能将值绑定到参数。

1 个答案:

答案 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)