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

如何使用swagger-codegen生成的Python-Flask服务器?解决运行报错及扩展问题

解决Connexion服务器启动问题+业务扩展&版本管理指南

一、先搞定启动报错:ModuleNotFoundError

你遇到的这个错误是因为Connexion版本不兼容——swagger-codegen生成的服务器代码适配旧版(2.x),而你大概率安装了3.x版本(3.x移除了connexion.apps.flask_app模块)。按以下步骤修复:

  • 安装匹配的依赖
    直接用项目中的setup.py安装所有正确依赖最省心:

    pip install -e .
    

    也可以单独指定Connexion的稳定兼容版本:

    pip install connexion==2.14.2
    
  • 重新启动服务器
    再次执行python -m test_server,正常情况下服务器会在http://localhost:8080启动,访问/swagger-ui就能查看自动生成的API文档。

二、业务扩展方法

基于Connexion的服务器扩展逻辑很直接,核心修改生成的业务逻辑文件即可:

  • 添加新API接口:

    1. 更新你的OpenAPI定义文件(yaml/json),补充新接口的路径、请求/响应规则。
    2. 要么用swagger-codegen重新生成服务器代码,要么手动在test_server/controllers目录下添加对应的处理函数。
    3. 处理函数中用connexion.request获取请求数据,返回的结构要和OpenAPI定义的响应模型匹配,Connexion会自动完成参数校验和数据序列化。
  • 修改现有业务逻辑:
    直接编辑test_server/controllers下的Python文件(比如默认生成的default_controller.py),在里面加入数据库操作、业务计算等实际逻辑即可,路由和参数校验的事Connexion已经帮你处理好了。

三、API版本管理方案

常用的有两种方案,根据业务场景选择:

  • 路径版本化(推荐)
    在OpenAPI定义里给接口路径添加版本前缀,比如/v1/users、/v2/users,生成代码后不同版本的接口会对应不同的控制器函数,各自实现独立逻辑,互不干扰。

  • Header版本化
    定义自定义Header(比如X-API-Version),在控制器函数里通过connexion.request.headers.get('X-API-Version')获取版本号,然后分支处理不同版本的业务逻辑。这种方式适合版本差异较小的场景,无需拆分过多文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:12:24