Skip to content

功能#

Huma 是一个现代、简单、快速且灵活的微框架,用于在 Golang 中构建 HTTP REST/RPC API,由 OpenAPI 3 和 JSON Schema 支持。发音 IPA: /'hjuːmɑ/。该项目的目标是提供:

  • 一个现代的 REST 或 HTTP RPC API 后端框架,供 Go 开发者使用
  • 针对现有服务的团队的渐进式采用
    • 带上您自己的路由器、中间件和日志/指标
    • 可扩展的 OpenAPI & JSON Schema 层,用于记录现有路由
  • 防止常见错误的护栏
  • 不会过时的文档
  • 高质量的生成开发者工具

功能包括:

  • 在您选择的路由器之上的声明式接口:
    • 操作和模型文档
    • 请求参数(路径、查询或头部)
    • 请求体
    • 响应(包括错误)
    • 响应头部
  • 使用 RFC9457application/problem+json 的 JSON 错误(但可以更改)
  • 每个操作的请求大小限制,带有合理的默认值
  • 内容协商,服务器和客户端之间
    • 通过默认配置的 Accept 头部支持 JSON (RFC 8259) 和可选的 CBOR (RFC 7049) 内容类型。
  • 支持条件请求,例如 If-MatchIf-Unmodified-Since 头部实用工具。
  • 可选的自动生成 PATCH 操作,支持:
  • 输入和输出模型的注解 Go 类型
    • 从 Go 类型生成 JSON Schema
    • 路径/查询/头部参数、请求体、响应头部等的静态类型
    • 自动输入模型验证和错误处理
  • 使用 Stoplight Elements 生成文档
  • 可选的内置 CLI,通过参数或环境变量配置
    • 例如通过 -p 8000--port=8000SERVICE_PORT=8000 设置
    • 内置启动操作和优雅关闭
  • 生成 OpenAPI,以访问丰富的工具生态系统
  • 为每个资源生成 JSON Schema,使用可选的 describedby 链接关系头部,以及返回对象中的可选 $schema 属性,这些属性可集成到编辑器中进行验证和补全。

吉祥物

你好!我是快乐的 Huma 鲸鱼,在这里提供帮助。你会在文档中看到我留下有用的提示。

官方 Go 包文档始终可以在 https://pkg.go.dev/github.com/danielgtaylor/huma/v2 找到。继续阅读,了解 Huma 中可用的各种功能介绍。