跳转到主要内容

以开发者为中心,性能卓越的Python Web框架

项目描述

Xpresso

Test Coverage Package version Supported Python versions

Xpresso 是一个基于 Starlette、Pydantic 和 di 构建的 ASGI Web框架,深受 FastAPI 启发。

一些突出功能包括

  • 支持高性能 ASGI (在Python Web框架的上下文中)
  • OpenAPI 文档生成
  • 自动解析和验证请求体和参数,并提供自定义提取器的挂钩
  • 完全支持 OpenAPI 参数序列化
  • 高度类型化和测试的代码库,具有出色的IDE支持
  • 强大的依赖注入系统,由 di 支持

需求

Python 3.7+

安装

pip install xpresso

您还需要安装一个 ASGI 服务器,例如 Uvicorn。

pip install uvicorn

示例

创建一个名为 example.py 的文件

from pydantic import BaseModel
from xpresso import App, Path, FromPath, FromQuery

class Item(BaseModel):
    item_id: int
    name: str

async def read_item(item_id: FromPath[int], name: FromQuery[str]) -> Item:
    return Item(item_id=item_id, name=name)

app = App(
    routes=[
        Path(
            "/items/{item_id}",
            get=read_item,
        )
    ]
)

运行应用程序

uvicorn example:app

在您的浏览器中导航到 http://127.0.0.1:8000/items/123?name=foobarbaz。您将获得以下JSON响应

{"item_id":123,"name":"foobarbaz"}

现在导航到 http://127.0.0.1:8000/docs,在交互式 Swagger UI 文档中进行探索

Swagger UI

有关更多示例、教程和参考资料,请参阅我们的 文档

灵感来源与其他框架的关系

Xpresso 主要受到 FastAPI 的启发。FastAPI 首先提出了几个对 Xpresso 方法至关重要的想法

  • 利用 Pydantic 进行 JSON 解析、验证和模式生成。
  • 利用 Starlette 进行路由和其他低级 Web 框架功能。
  • 提供简单但强大的依赖注入系统。
  • 使用该依赖注入系统提取请求数据、表单、查询参数等。

Xpresso 通过以下方式对这些想法进行了提炼

当前状态

该项目正在积极开发中。它不应被视为“稳定”或准备好在生产环境中使用。然而,它适用于实验和学习!

哪些已经实现且相对稳定?

  1. 参数(查询、头等)和请求主体的提取和 OpenAPI 文档。
  2. 参数序列化。
  3. 路由,包括应用程序、路由器和路由。
  4. 依赖注入和测试实用工具(依赖项覆盖)。

大多数这些 API 将在将来保持 通常 稳定,尽管某些小方面(如参数名称)可能在某个时候发生变化。

哪些尚未实现或不稳定?

  1. 绑定器的低级 API(在 xpresso.binders 中的内容):这是公开的,但应被视为实验性的,并且可能会发生变化。高级 API(如 FromPath[str]Annotated[str, PathParam(...)])可能会保持稳定。
  2. 安全依赖项和 OpenAPI 集成。这部分曾经存在,但需要进行一些工作。计划在将来进行,但我们需要考虑这些功能的范围和 API。

在GitHub上查看此版本:v0.46.0

项目详情


发布历史 发布通知 | RSS订阅

下载文件

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

源代码分发

xpresso-0.46.0.tar.gz (44.2 kB 查看哈希值)

上传时间: 源代码

构建分发

xpresso-0.46.0-py3-none-any.whl (62.8 kB 查看哈希值)

上传时间: Python 3

由以下机构支持

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