Golang框架Huma v2.13.0正式发布

Golang框架Huma v2.13.0正式发布 我已发布 Huma v2.13.0 https://github.com/danielgtaylor/huma。Huma 是一个用于构建 Web API 的微框架,包含许多有用的功能:

  • 自动生成始终保持最新的 OpenAPI 3.1/3.0 规范(轻松生成 CLI/SDK 客户端)
  • 使用 JSON Schema 标签进行内置验证
  • 路由器无关(可以使用任何路由器,包括 Go 1.22 的 http.ServeMux
  • 类型安全的处理器,对所有输入/输出使用结构体
  • 支持客户端驱动的多种格式内容协商(JSON/CBOR 等)
  • 可选的 CLI/配置功能
  • 可选的自动 PATCH 操作生成
  • 可选的服务器发送事件和流支持

在此最新版本中,Huma 除了 Go 标准库外,硬依赖。它小巧、快速且高效。庆祝

请查看面向初学者的教程:https://huma.rocks/tutorial/installation/


更多关于Golang框架Huma v2.13.0正式发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

你好 Daniel,

我还没有使用过这个,但我已经阅读你的代码有一段时间了。我非常欣赏这个项目文档的完善和结构的清晰。我从你的代码库中学到了很多关于 Go 的知识,所以非常感谢你。

我计划下个月为一个小客户构建一个 CRUD 应用,我打算在实际项目中最终尝试一下 HUMA。

更多关于Golang框架Huma v2.13.0正式发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Huma v2.13.0 的发布确实是一个重要里程碑,特别是实现了零硬依赖(仅依赖标准库)。这使得框架更加轻量和可预测。以下是一个快速示例展示如何使用新版本:

package main

import (
    "context"
    "net/http"
    
    "github.com/danielgtaylor/huma/v2"
    "github.com/danielgtaylor/huma/v2/adapters"
)

// 定义输入结构体
type CreateInput struct {
    Name string `json:"name" maxLength:"30"`
    Age  int    `json:"age" minimum:"0"`
}

// 定义输出结构体  
type CreateOutput struct {
    ID   string `json:"id"`
    Name string `json:"name"`
}

func main() {
    // 使用标准库的 http.ServeMux
    mux := http.NewServeMux()
    
    // 创建 Huma API 实例
    api := huma.NewAPI("My API", "1.0.0")
    
    // 注册路由
    huma.Register(api, huma.Operation{
        OperationID: "create-user",
        Method:      http.MethodPost,
        Path:        "/users",
    }, func(ctx context.Context, input *CreateInput) (*CreateOutput, error) {
        // 输入会自动验证(基于 JSON Schema 标签)
        return &CreateOutput{
            ID:   "123",
            Name: input.Name,
        }, nil
    })
    
    // 将 Huma 适配到标准库的 mux
    adapters.NewAdapter(api).Register(mux)
    
    http.ListenAndServe(":8888", mux)
}

这个示例展示了 Huma 的核心特性:

  1. 类型安全的处理器 - 使用结构体作为输入输出
  2. 自动验证 - 通过 JSON Schema 标签验证输入
  3. 路由器无关 - 使用标准库的 http.ServeMux
  4. 零硬依赖 - 仅使用标准库和 Huma 自身

OpenAPI 文档会自动生成,可以通过 /openapi.json/openapi.yaml 访问。Huma 的零依赖设计确实让它在生产环境中更加可靠和易于维护。

回到顶部