什么是 Connexion嘿,你是不是也遇到过这种场景:前端小伙伴催文档,后台还在改接口;文档老大不小心写错了却没人发现;项目后期维护,谁知道哪个接口到底长啥样……Connexion,顾名思义,就是“连接”的意思——把 OpenAPI(swagger)规范和你的 Python 代码无缝连上,让文档和实现始终一对一。写好 openapi.yaml,代码里就放心大胆地写业务逻辑。文档永远可信,接口永远合规。
核心痛点:让 API 开发从“先有鸡还是先有蛋”变明明白白传统开发流程里,往往是“先写代码,再自动生成文档”,结果呢?
- • 自动生成的文档总是缺少注释、示例,看了也不懂;
- • 多团队协作,各用各的习惯,接口定义水火不容。Connexion 的思路正好相反:先写 Spec,再挂代码。这样:
- 2. 自动验证请求、响应,参数少了报错、多了也报错;
- 3. Swagger UI 实时试用,别人都能马上上手。
Connexion 怎么用?一个小例子带你飞看例子更直观:假设我们要做个问候接口——
# run.pyfrom connexion importAsyncAppapp =AsyncApp(__name__)app.add_api("openapi.yaml")asyncdefsay_hello(name:str, title:str="Mr"):# 参数自动解析、验证return{"message":f"Hello, {title}{name}!"},200if __name__ =="__main__": app.run(port=8080)# 或者 uvicorn run:app
就这样,完全不需要 @app.route,Connexion 自动根据 spec 注册路由、处理参数、做校验,还能给你开个 Swagger UI 控制台,点击一下就能“Try it out”!
比比其它框架:优缺点大盘点市面上类似的工具可不少,比如 Flask-RESTful、FastAPI、Django REST Framework……
- • Flask-RESTful:灵活度高,但你得自己写校验、写文档;
- • FastAPI:也是 spec-first,自动生成文档,而且性能杠杠的,但语法更偏现代化,学习成本稍高;
- • DRF:整合 Django 太深,不想用 Django 的项目也不合适。Connexion 的优势是专注于“规范+校验+文档”这条赛道:
- • ✅ 兼容多种框架(AsyncApp、FlaskApp、ASGI/WSGI 中间件都支持);
- • ✅ Spec-first,文档永远领先于实现;
- • ✅ 插件化设计,按需加载 Swagger UI、Auth、Mock;
- • 🚧 相对 FastAPI 少了部分自动化依赖注入、类型推断特性;
- • 🚧 更传统的写法,异步生态需要自行配置 uvicorn、starlette。
适合谁用?什么时候要慎重如果你们团队:
- • 已经有 OpenAPI 化、Mock 化需求;Connexion 简直坐它头把交椅。但要是你的项目:
- • 想要最齐全的自动生成 Pydantic 数据模型;可能 FastAPI 更适合你。
总结Connexion 把 Spec 当核心,让接口开发变得简单、可控、高效。文档、校验、路由,三位一体;兼容多生态,插件化按需加载。要想让团队协作更流畅、API 更健壮,不妨试试 Connexion。未来还会加更多特性,活捉新版本,赶快上车吧!
项目地址:https/github.com/spec-first/connexion