【问题标题】:Azure function optional "middle" route parameterAzure 函数可选“中间”路由参数
【发布时间】:2019-01-11 08:56:18
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: c# .net azure azure-functions


    【解决方案1】:

    如您所见,Azure 函数还不支持可选的“中间”路由参数。只有像SomeRoute/{MyOptionalRoute:int?}/{AnotherRoute:int?} 这样的连续可选参数有效。

    言归正传,找proxy for function的变通方法,看看是否符合你的要求。

    proxies.json 添加到您的函数项目中,将文件属性copy to output directory 更改为copy if newer

    看下面的内容,我用0作为保留数代替空值。代理将http://localhost/api/SomeRoute/AnotherRoute 指向真实的url http://localhost/api/SomeRoute/0/AnotherRoute,它与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"
        }
      }
    }
    

    【讨论】:

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