猿问

Azure 函数可选的“中间”路由参数

我想在 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


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


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


浮云间
浏览 176回答 1
1回答

回首忆惘然

如您所见,Azure 函数尚不支持可选的“中间”路由参数。只有连续的可选参数像SomeRoute/{MyOptionalRoute:int?}/{AnotherRoute:int?}作品。回到正题,找一个带有代理函数的解决方法,看看是否满足你的要求。将 a 添加proxies.json到您的函数项目,将文件属性更改copy to output directory为copy if newer.见下面的内容,我使用0作为保留数作为空值的替代。代理定向http://localhost/api/SomeRoute/AnotherRoute到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"    }  }}
随时随地看视频慕课网APP
我要回答