跳转到主要内容

连接 - 使用OpenAPI/Swagger的开源API应用

项目描述

coveralls PyPI version License GitHub Workflow Status Coveralls

探索文档 »


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),该应用程序使用不同的框架编写。独立应用程序可以使用 AsyncAppFlaskApp 构建。

  • 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。

📚 推荐资源

关于先定义规范的工作优势

帮助您先定义规范的工具

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的应用文件。如果您不确定选择哪个,请了解更多关于安装包的信息

源分发

connexion-3.1.0.tar.gz (88.2 kB 查看哈希值)

上传时间

构建分发

connexion-3.1.0-py3-none-any.whl (113.1 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面