关于 litestar-responses
面向 Litestar API 开发者的响应设计技能,指导选择类型化返回值、响应容器或自定义行为,并检查 OpenAPI 契约是否准确。
主要功能
- 01选择类型化及专用响应形式
- 02设置状态码、标头和 Cookie
- 03处理文件、流、SSE 和重定向
- 04分层配置共享响应类行为
- 05校验响应模式与 OpenAPI
适用场景
- 01设计类型化 JSON 接口响应
- 02添加动态标头或 Cookie
- 03提供文件或服务器发送事件
- 04核对响应契约与 OpenAPI
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alti3/ litestar-skills --skill litestar-responses安装后在 Claude Code 中输入/litestar-responses确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/response-basics.mdresponse-containers.md详细介绍
响应
执行工作流
- 从符合契约的最简单返回形式开始:普通类型化数据、
Response[T]或专用响应容器。 - 默认值不够时,显式设置状态码、媒体类型、标头和 Cookie。
- 对重定向、文件、流、SSE、模板或第三方 ASGI 响应,选择专用响应类型。
- 仅当多个处理器需要共享序列化或封套行为时,才应用响应类分层。
- 验证类型化响应、仅用于文档的标头和 Cookie、空响应体状态码,以及专用响应容器的 OpenAPI 准确性。
核心规则
- 对标准 JSON 响应,优先使用普通类型化返回值。
- 需要在运行时控制标头、Cookie、后台任务或状态码时,使用
Response[T]。 - 为响应类指定精确的泛型参数,确保架构生成准确。
- 如果客户端依赖运行时标头和 Cookie,就对其进行文档说明,尤其是值动态设置时。
- 将
204、304和其他无响应体的响应视为返回None的契约。 - 如果 API 使用共享契约,请确保成功响应封套与异常处理响应封套保持一致。
- 使用专用响应容器,而非手动重新实现文件、重定向、流或 SSE 行为。
- 有意且局部地应用分层的
response_class、response_headers和response_cookies覆盖。
选择指南
- Litestar 默认行为已符合契约时,返回普通数据。
- 负载正常但元数据是动态的时,返回
Response[T]。 - 多个端点需要相同的序列化策略时,使用
response_class=。 - 封装第三方 ASGI 响应对象或实现自定义底层行为时,返回
ASGIApp。 - 传输语义特殊时,使用
File、Stream、ServerSentEvent或重定向响应。 - 对进程内客户端无法良好模拟的实时服务端场景,使用子进程测试客户端,尤其是无限 SSE 流。
参考文件
只阅读所需章节:
- 关于普通类型化返回值、
Response[T]、状态码、分层的response_class、自定义响应类和后台任务,请阅读 references/response-basics.md。 - 关于标头、Cookie、重定向、文件、流、SSE、模板和 ASGI 应用返回值,请阅读 references/response-containers.md。
推荐默认做法
- 除非需要传输层控制,否则让 Litestar 序列化普通 JSON 返回值。
- 在代码和测试中使用
litestar.status_codes中的状态码常量。 - 使用
documentation_only=True元数据记录动态标头和 Cookie,并在响应或钩子中设置运行时值。 - 确保流和 SSE 生成器可安全取消,并根据断开连接行为限制其运行。
- 明确文件传输和重定向行为,确保中间层和客户端的行为可预测。
反模式
- 到处返回
Response[Any],导致架构精度丢失。 - 在普通
Response[T]或内置容器已足够时,仍使用自定义响应类。 - 为
204 No Content端点返回响应体。 - 如果客户端依赖动态标头或 Cookie,却不在 OpenAPI 中记录它们。
- 仅使用进程内客户端测试无限流或 SSE 行为。
- 手动重新实现文件服务,而不使用
File。
验证清单
- 确认返回注解与实际响应正文和状态码一致。
- 确认空正文响应使用
None注解和正文。 - 确认分层的
response_class、response_headers和response_cookies优先级符合预期。 - 如果客户端依赖动态标头和 Cookie,确认已对其进行说明。
- 确认流式响应、SSE、重定向和文件响应使用了预期的媒体类型和传输行为。
- 确认后台任务仅在响应正文发送完毕后运行。
- 确认自定义响应类或容器变更后,OpenAPI 输出仍然准确。
- 确认响应文档与
litestar-openapi元数据和示例保持一致。
跨技能交接
- 使用
litestar-exception-handling设计错误封装和失败响应。 - 如果响应变更会显著影响架构输出,请使用
litestar-openapi。 - 如需深入了解模板引擎相关事项,请使用
litestar-templating。 - 使用
litestar-testing对状态码、标头、Cookie、流式响应、重定向和 SSE 行为进行断言。
Litestar 参考资料
评论
支持 Markdown