我想在Azure函数中将“中间”路由参数设为可选。例如:

 public static HttpResponseMessage MyFunction([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "SomeRoute/{MyOptionalRoute=int?}/AnotherRoute")]HttpRequestMessage req, TraceWriter log,
        int MyOptionalRoute = 0)
    {
       //some magic
    }


如果我给MyOptionalValue一个值,则此方法有效。例如:/ SomeRoute / 123 / AnotherRoute

但如果我不返回404:例如:/ SomeRoute / AnotherRoute

有谁知道是否有办法解决这个问题,这样我就不必创建两个单独的函数了?我一直在环顾四周,我所看到的是人们使用可选的route参数作为序列中的最后一个参数。也许我只是不知道谷歌使用哪些关键字,还是不可能?

感谢所有我能得到的帮助。

谢谢。

最佳答案

如您所见,Azure函数尚不支持可选的“中间”路由参数。仅连续的可选参数(如SomeRoute/{MyOptionalRoute:int?}/{AnotherRoute:int?})有效。

回到问题所在,找到proxy for function的解决方法,查看它是否满足您的要求。

在功能项目中添加proxies.json,将文件属性copy to output directory更改为copy if newer

c# - Azure函数可选的“中间”路由参数-LMLPHP

请参阅下面的内容,我使用0作为保留数字作为null值的替代。代理将http://localhost/api/SomeRoute/AnotherRoute定向到真实的URL http://localhost/api/SomeRoute/0/AnotherRoute,该URL与SomeRoute/{MyOptionalRoute:int}/AnotherRoute的模式匹配。

{
  "$schema": "http://json.schemastore.org/proxies",
  "proxies": {
    "proxy1": {
      "matchCondition": {
        "methods": [ "GET" ],
        "route": "/api/SomeRoute/AnotherRoute"
      },
      "backendUri": "http://localhost/api/SomeRoute/0/AnotherRoute"
    }
  }
}

10-08 04:58