You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Azure Function路由的最后两个参数设置为可选?

在Azure Function中实现URL路由的可选参数

要将moneyCurrency和moneyAmount设为可选参数,需遵循Azure Function的路由规则,同时配合参数默认值或可空类型实现,具体步骤如下:

正确实现方案

1. 调整路由模板

将最后两个参数标记为可选,注意可选参数必须放在路由的最末尾,修改后的路由格式如下:

Route = "createmoney/printdate/{printDate}/moneycurrency/{moneyCurrency?}/moneyamount/{moneyAmount?}"

2. 配置方法参数

根据需求选择以下两种方式之一:

  • 设置默认值:当请求未传入参数时,使用预设的默认值
    [FunctionName("MakeMeRich")]
    public async Task<IActionResult> MakeMeRich(
        [HttpTrigger(AuthorizationLevel.Function, "get", Route = "createmoney/printdate/{printDate}/moneycurrency/{moneyCurrency?}/moneyamount/{moneyAmount?}")] HttpRequest req,
        ILogger log, 
        string printDate, 
        string moneyCurrency = "USD",  // 默认货币为USD
        decimal moneyAmount = 0)       // 默认金额为0
    {
        // 函数业务逻辑
        return new OkObjectResult($"打印日期: {printDate}, 货币: {moneyCurrency}, 金额: {moneyAmount}");
    }
    
  • 使用可空类型:允许参数为null,需自行处理空值场景
    [FunctionName("MakeMeRich")]
    public async Task<IActionResult> MakeMeRich(
        [HttpTrigger(AuthorizationLevel.Function, "get", Route = "createmoney/printdate/{printDate}/moneycurrency/{moneyCurrency?}/moneyamount/{moneyAmount?}")] HttpRequest req,
        ILogger log, 
        string printDate, 
        string? moneyCurrency,  // 可空字符串
        decimal? moneyAmount)   // 可空decimal
    {
        // 处理null值逻辑,比如赋默认值
        var currency = moneyCurrency ?? "CNY";
        var amount = moneyAmount ?? 100;
        return new OkObjectResult($"打印日期: {printDate}, 货币: {currency}, 金额: {amount}");
    }
    

关键注意事项

  • 可选参数必须位于路由的最后段,不能在中间插入可选参数,否则路由匹配会失败
  • 路由中的{参数名?}标记和方法参数的默认值/可空类型必须配套使用,缺一不可

合法请求示例

  • 传入所有参数:GET /api/createmoney/printdate/2024-05-20/moneycurrency/EUR/moneyamount/1000
  • 仅传打印日期和货币:GET /api/createmoney/printdate/2024-05-20/moneycurrency/GBP
  • 仅传打印日期:GET /api/createmoney/printdate/2024-05-20

内容的提问来源于stack exchange,提问作者MidTown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:47:14