【问题标题】:How to make a route parameter optional in Azure Function如何在 Azure 函数中使路由参数可选
【发布时间】:2017-06-16 16:40:31
【问题描述】:

如何在 Azure Function 中使路由参数可选

public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "ResolveKey/{key}/{resolver}")]HttpRequestMessage req, TraceWriter log, string key,string resolver= "default")

在上面的代码中,我尝试通过设置默认值 string resolver= "default" 来使解析器参数可选。代码编译并运行良好,但 URL 总是希望存在解析器参数,否则我会得到 404。

我想在上面的代码中将解析器参数设为可选。有什么办法吗?

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    您可以在路由模板本身中表示参数是可选的。

    对于上述路线,您只需将模板更改为以下内容:

    ResolveKey/{key}/{resolver?}
    

    您可以找到更多关于可选路由和默认值的信息here

    【讨论】:

    • 对于那些希望在解析器中匹配完整路径的人,Azure 函数将默认对 {resolver?} 匹配进行 url 编码。您将需要包含一个应用程序设置来解决此问题,AZURE_FUNCTION_PROXY_BACKEND_URL_DECODE_SLASHES : true。 (github.com/Azure/azure-functions-host/issues/…)
    【解决方案2】:

    Azure Functions 现在支持正则表达式。您可以将路由模板更改为

    ResolveKey/{key}/{*resolver}
    

    【讨论】:

      猜你喜欢
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2019-05-04
      • 2016-08-22
      • 2012-03-24
      • 2015-02-05
      相关资源
      最近更新 更多