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

AWS Lambda部署Flasgger时apispec路径多出$default段问题

问题根因
  • 部署时使用的是AWS API Gateway V2(HTTP API)默认的$default阶段,serverless-wsgi插件转发请求时,会默认把阶段路径/$default写入WSGI协议的SCRIPT_NAME环境变量
  • Flasgger生成OpenAPI规范文件的访问地址时,会自动拼接SCRIPT_NAME作为路径前缀,最终生成了带/$default的错误地址。而API Gateway的$default阶段本身不需要在请求路径中携带阶段段,这也是手动删掉路径里的$default后接口可以正常访问的原因
修复方案

二选一即可,优先选方案1,对基础设施配置无侵入:

方案1:调整Flasgger配置,跳过SCRIPT_NAME自动拼接

直接修改swagger配置,强制指定spec和静态资源的路径前缀为空,不自动拼接阶段路径,修改后的完整配置如下:

swagger_config = {
    "headers": [],
    "specs": [
        {
            "endpoint": 'apispec',
            "route": '/apispec.json',
            # 强制spec路径不拼接SCRIPT_NAME前缀
            "url_prefix": "",
            "rule_filter": lambda rule: True,
            "model_filter": lambda tag: True,
        }
    ],
    "static_url_path": "/flasgger_static",
    # 同步配置静态资源前缀为空,避免Swagger UI的JS/CSS资源路径也异常
    "swagger_ui_static_url_prefix": "",
    "swagger_ui": True,
    "specs_route": "/cms-api"
}

# 原有初始化逻辑保持不变
swagger_config['swagger_ui_bundle_js'] = '//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js'
swagger_config['swagger_ui_standalone_preset_js'] = '//unpkg.com/swagger-ui-dist@3/swagger-ui-standalone-preset.js'
swagger_config['jquery_js'] = '//unpkg.com/jquery@2.2.4/dist/jquery.min.js'
swagger_config['swagger_ui_css'] = '//unpkg.com/swagger-ui-dist@3/swagger-ui.css'
Swagger(app, config=swagger_config, template=template)

修改完成后重新部署服务即可生效。

方案2:调整serverless-wsgi配置,剥离阶段路径

如果不想修改应用侧代码,可以在serverless.yml中修改wsgi插件配置,让插件转发请求前自动剥离阶段路径,不向应用传递SCRIPT_NAME:

custom:
  wsgi:
    app: src.__init__.app
    # 开启阶段路径剥离,移除传给应用的/$default前缀
    strip_stage: true

修改后重新执行serverless deploy部署即可。

验证方法

部署完成后访问/cms-api文档地址,打开浏览器开发者工具查看网络请求:

  • 确认apispec.json的请求地址不包含/$default段
  • 确认接口返回200状态码,Swagger UI可以正常加载所有接口定义

提示:如果后续给HTTP API绑定自定义域名,上述两种配置都不需要额外调整,路径可以自动适配。

内容的提问来源于stack exchange,提问作者Aldous S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:45:43