当前位置: 首页 > 知识库问答 >
问题:

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

戚飞虎
2023-03-14

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

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

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

谢谢

共有1个答案

符功
2023-03-14

如您所发现的,Azure函数还不支持可选的“中间”路由参数。只有连续的可选参数,如一些路线/{MyOptionalRoute: int?}/{antherRoute: int?}工作。

回到正题,用proxy for function找一个变通方法,看看是否符合你的要求。

proxies.json 添加到函数项目中,将文件属性复制到输出目录更改为复制(如果较新)。

看下面的内容,我用0作为保留号作为空值的替代。代理将< code > http://localhost/API/some route/another route 定向到真实url < code > http://localhost/API/some route/0/another route ,该URL与< code > some route/{ myoptional route:int }/another route 的模式相匹配。

{
  "$schema": "http://json.schemastore.org/proxies",
  "proxies": {
    "proxy1": {
      "matchCondition": {
        "methods": [ "GET" ],
        "route": "/api/SomeRoute/AnotherRoute"
      },
      "backendUri": "http://localhost/api/SomeRoute/0/AnotherRoute"
    }
  }
}
 类似资料:
  • 所以我有一些路线,比如<code>/category/tech</code>和<code</categority/tech/new<code>和<code>/category/tech/old</code>等等 他们都使用 或者我必须分别定义它们,就像

  • 我需要以两种方式路由到某个组件——一种是带参数的,另一种是不带参数的。我已经搜索了可选参数,但不知何故找不到太多信息。 所以我的路线: 当我以编程方式调用参数时,一切都很好 但是我也需要通过导航这样称呼它 组件接受道具 以及用作此类的组件 现在,我设法让它工作的丑陋方式是复制路线,让其中一个不带道具: 它实际上是有效的,但我对它不满意-也在开发模式下vuejs警告我 当然有一种方法可以在组件调用中

  • 问题内容: 我有一条看起来像这样的路线: 但是,这行不通-如果我打电话,它会到达路线,但是如果我打电话,它不会。 是否可以有一个可选的splat参数,或者我必须使用正则表达式来检测到这一点? 编辑 : 更清楚地说,这是我要达到的要求: 第一和第二个参数是 必需的 第一个参数是静态的,第二个参数是命名的参数。 可以附加任意数量的 可选 附加参数,并且仍然可以实现。 问题答案: 这适用于Express

  • 例如,在具有分页列表的路由上,网址可能如下所示,表示我们已加载第二个网页: 使用指令和来传递查询参数。例如: 或者,我们可以使用服务通过JS跳转: 读取查询参数 See Official Documentation on Query Parameters

  • 我试图创建一个符合以下所有URL的路由: 这是我目前的路线: 根据关于https://github.com/rackt/react-router/blob/master/docs/guides/basics/RouteMatching.md 此路由应该完全匹配,但与上面的URL都不匹配。 我需要做什么来支持这个可选参数? 我在React路由器版本0.13.3,如果我删除,那么我可以匹配第一个URL

  • 是否可以在 Angular 2 路由中具有可选的路由参数?我在RouteConfig中尝试了Angular 1.x语法,但收到以下错误: “原始异常:路径“/ user /: id ?“包含”?