Typact
TYPED HTTP CONTRACTS

核心概念

Typact 把 Python 函数签名视为一份可执行的 HTTP 契约。

一条清晰的流水线

每次调用都会依次经过四个阶段:读取声明 → 构建请求 → Runtime 传输 → 响应转换。各阶段只负责一件事,因此可以独立替换和测试。

阶段 职责
Client 保存基础地址、路由元数据和共享配置
Builder 将参数注解转换为 URL、Header 与请求体
Runtime 真正发送请求,不参与业务建模
Converter 根据返回类型转换响应数据

函数签名就是契约

@client.post("/teams/{team_id}/members")
async def add_member(
    team_id: int = Path(),
    notify: bool = Query(True),
    payload: MemberInput = Body(),
) -> Member:
    pass

路径、查询参数、请求体与响应模型集中在一个位置,编辑器和类型检查器可以完整理解这份契约。

可插拔,而非绑定

Typact 的核心不依赖某个 HTTP 库。UrllibRuntime 负责零依赖默认体验,HttpxRuntimeAioHttpRuntime 提供不同生态选择,也可以实现自己的 Runtime。