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

Flask API迁移至Azure Functions时路由路径约束报错求助

问题:Azure Functions路由中{file_path:path}约束报错

尝试将Flask API迁移至Azure Functions时,使用以下路由配置:

@app.route(route="{directory_name}/static/{file_path:path}", auth_level=func.AuthLevel.ANONYMOUS,
           methods=[func.HttpMethod.GET])
def serve_static(req: func.HttpRequest) -> func.HttpResponse:
    ....

其中{file_path:path}在Flask中可正常工作,但在Azure Functions中触发错误:

Microsoft.AspNetCore.Routing: An error occurred while creating the route with name 'serve_static' and template
'{directory_name}/static/{file_path:path}'. Microsoft.AspNetCore.Routing: The constraint entry 'file_path' - 'path' on the route '{directory_name}/static/{file_path:path}' could not be resolved by the constraint resolver of type 'DefaultInlineConstraintResolver'.
解决方案

Azure Functions的路由系统基于ASP.NET Core路由规则,不支持Flask风格的:path约束语法。要实现匹配任意剩余路径的需求,需使用星号前缀的参数格式{*file_path},它会捕获路由中该位置之后的所有字符(包括斜杠)。

修改后的路由配置如下:

@app.route(route="{directory_name}/static/{*file_path}", auth_level=func.AuthLevel.ANONYMOUS,
           methods=[func.HttpMethod.GET])
def serve_static(req: func.HttpRequest) -> func.HttpResponse:
    # 从路由参数中获取对应值
    directory_name = req.route_params.get('directory_name')
    file_path = req.route_params.get('file_path')
    # 后续业务逻辑保持不变
    ....

该写法可让Azure Functions正确解析包含斜杠的文件路径,效果与Flask中{file_path:path}一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:04:52