连接 - 使用OpenAPI/Swagger的开源API应用
项目描述
Connexion 是一个现代的 Python 网络框架,它使规范优先和 API 优先的开发变得简单。你可以用尽可能多的细节在 OpenAPI(或 Swagger)规范中描述你的 API,Connexion 将保证它按你指定的方式工作。
它既可以独立运行,也可以与任何 ASGI 或 WSGI 兼容的框架结合使用!
📢 Connexion 3 最近发布了!在这里了解更改内容 »
✨ 特性
Connexion 根据您的规范提供以下功能 基于您的规范
- 🚏 自动路由注册,无需
@route
装饰器 - 🔒 身份验证,与您的应用程序逻辑分离
- 🔎 请求和响应验证,包括头、参数和主体
- 📬 参数解析和注入,无需请求对象
- 📨 响应序列化,您可以直接返回常规 Python 对象
- 📺 Swagger UI 控制台,带有实时文档和“试一试”功能
- 🧩 可插拔性,全方位
Connexion 还可以帮助您编写 OpenAPI 规范,并通过提供命令行界面来测试和模拟规范,从而开发它。
connexion run openapi.yaml
(回到顶部)
🫶 赞助商
赞助商帮助我们投入时间维护 Connexion。想帮忙吗?
(回到顶部)
🪤 为什么选择 Connexion
使用 Connexion,您首先编写规范。然后 Connexion 调用您的 Python 代码,处理从规范到代码的映射。这激励您编写规范,以便所有开发人员都能理解您的 API 是做什么的,甚至在您编写任何代码之前。
如果多个团队依赖于您的 API,您可以使用 Connexion 简单地向他们发送您的 API 文档。这保证了您的 API 将遵循您编写的规范。这与大多数框架提供的流程不同,这些框架在您编写代码之后生成规范。基于代码生成规范的缺点是,它们通常缺乏细节,或者将您的文档与应用程序的实现逻辑混合在一起。
(回到顶部)
⚒️ 如何使用
安装
您可以使用 pip 安装 connexion
$ pip install connexion
Connexion 提供了带有可选依赖的 'extras',以解锁更多功能
swagger-ui
:为您的应用程序启用 Swagger UI 控制台。uvicorn
:使您可以使用app.run()
在开发中运行您的应用程序,而不是使用外部 ASGI 服务器。flask
:使FlaskApp
能够构建与 Flask 生态系统兼容的应用程序。
您可以通过以下方式安装它们
$ pip install connexion[swagger-ui]
$ pip install connexion[swagger-ui,uvicorn]
(回到顶部)
创建您的应用程序
Connexion 可以用作独立应用程序,也可以用作包装现有 ASGI(或 WSGI)应用程序的中件(middleware),该应用程序使用不同的框架编写。独立应用程序可以使用 AsyncApp
或 FlaskApp
构建。
-
AsyncApp
是一个轻量级应用程序,具有本机异步支持。如果您正在启动一个新项目且没有使用其他选项的特定原因,请使用它。from connexion import AsyncApp app = AsyncApp(__name__)
-
FlaskApp
利用Flask
框架,这对于您从 connexion 2.X 迁移或希望利用 Flask 生态系统非常有用。from connexion import FlaskApp app = FlaskApp(__name__)
-
ConnexionMiddleware
可以包装在任何现有的 ASGI 或 WSGI 应用程序周围。如果您已经在不同的框架中编写了应用程序,并希望添加 connexion 提供的功能,请使用它from asgi_framework import App from connexion import ConnexionMiddleware app = App(__name__) app = ConnexionMiddleware(app)
(回到顶部)
注册 API
虽然您可以在应用程序中注册单个路由,但Connexion在注册由OpenAPI(或Swagger)规范定义的API时表现得尤为出色。您的规范中描述的操作会自动通过operationId
与Python视图函数相关联。
run.py
def post_greeting(name: str, greeting: str): # Paramaeters are automatically unpacked
return f"{greeting} {name}", 200 # Responses are automatically serialized
app.add_api("openapi.yaml")
openapi.yaml
...
paths:
/greeting/{name}:
post:
operationId: run.post_greeting
responses:
200:
content:
text/plain:
schema:
type: string
parameters:
- name: name
in: path
required: true
schema:
type: string
- name: greeting
in: query
required: true
schema:
type: string
(回到顶部)
运行您的应用程序
如果您使用connexion[uvicorn]
安装了connexion,您可以使用run
方法来运行它。这仅适用于开发环境
app.run()
在生产环境中,使用如uvicorn
之类的ASGI服务器来运行应用程序。如果您在名为run.py
的Python模块中定义了app
,您可以按照以下方式运行它
$ uvicorn run:app
或者使用gunicorn
$ gunicorn -k uvicorn.workers.UvicornWorker run:app
现在您已经能够运行并使用Connexion了!
请参阅示例文件夹以获取更多示例。
(回到顶部)
📜 变更
完整的变更日志可以在GitHub发行页面上维护。
(回到顶部)
🤲 贡献
我们欢迎您的想法、问题和拉取请求。只需遵循通常/标准的GitHub实践。
为了便于开发,使用poetry安装全部额外插件来安装connexion,并安装预提交钩子来自动运行black格式化和静态分析检查。
pip install poetry
poetry install --all-extras
pre-commit install
您可以通过查看我们的架构来了解更多关于Connexion如何工作以及在哪里应用您的更改。
除非您提前明确声明,否则您提交给本仓库管理员的任何非平凡贡献,均将按照以下Apache License 2.0的条款和条件进行,不附加任何其他版权信息、条款或条件。
(回到顶部)
🙏 感谢
我们感谢所有为Connexion项目工作的贡献者,感谢Swagger/OpenAPI的支持,以及Zalando最初开发和发布Connexion。
📚 推荐资源
关于先定义规范的工作优势
帮助您先定义规范的工具
项目详情
下载文件
下载适合您平台的应用文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
connexion-3.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 66a44580991f53955b6e409a84fa9fa65c7ca4db52dc217b49cd35c201066083 |
|
MD5 | 552f1256758c75e483dff23957f01929 |
|
BLAKE2b-256 | e874a6d4aa579c8afc9acb0f9cefc1ae2f1da1564cd5b244bdd434407081535f |
connexion-3.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e92b6d0412eb54b3b69f2516b93d982a06b0e23f6d5c1ab94257c55d365f63ce |
|
MD5 | 4f9ef67425ab88b1c3ac0ee512860773 |
|
BLAKE2b-256 | 1e55e943e94b123b72e181c26a20205639f1f680578dd78deef903b1349994ae |