本文档介绍了 Gin Web 框架在基本路由和中间件功能之外的高级功能和实用工具。有关基本概念,请参阅 核心架构 和 中间件系统。有关请求/响应处理的详细信息,请参阅 请求处理 和 响应渲染。
Context 对象是 Gin 请求处理能力的基础。它提供了许多超越基本请求/响应处理的高级功能。
Gin 为存储在 Context 中的值提供了类型安全的 getter。这些方法在内部执行类型断言,如果断言失败,则返回该类型的零值
| 方法 | 返回类型 | 描述 |
|---|---|---|
GetString(key) | 字符串 | 如果 key 不存在或不是 string,则返回空字符串 |
GetBool(key) | bool | 如果 key 不存在或不是 bool,则返回 false |
GetInt(key) | int | 如果 key 不存在或不是 int,则返回 0 |
GetFloat64(key) | float64 | 如果 key 不存在或不是 float64,则返回 0.0 |
GetTime(key) | time.Time | 如果 key 不存在或不是 time.Time,则返回零时间 |
GetDuration(key) | time.Duration | 如果 key 不存在,则返回零 duration |
GetStringSlice(key) | []string | 如果 key 不存在或不是 string slice,则返回 nil |
GetStringMap(key) | map[string]any | 如果 key 不存在或不是 string map,则返回 nil |
GetStringMapString(key) | map[string]string | 如果 key 不存在,则返回 nil |
当使用生命周期超出请求的 goroutine 时,必须创建 Context 的副本,以避免竞态条件和内存问题
Gin 使用以下方法简化了文件上传处理
| 方法 | 目的 | 备注 |
|---|---|---|
FormFile(name) | 获取单个上传文件 | 返回 *multipart.FileHeader |
SaveUploadedFile(file, dst[, perm]) | 将文件保存到磁盘 | 可选指定权限 |
MultipartForm() | 获取所有表单数据 | 返回包含所有文件和字段的 *multipart.Form |
为了实现高效的二进制序列化,Gin 支持 Protocol Buffers
用于响应渲染
GinS 提供了一个简化的 API,使用一个全局的引擎实例,该实例在首次使用时惰性初始化
这种方法非常适合快速原型设计、简单应用程序和脚本。GinS 会自动初始化一个带有日志记录和恢复中间件的默认 Engine。
来源: ginS/gins.go5-160 ginS/README.md1-17
Gin 为标准的 Go HTTP Handler 提供了适配器
这些适配器有助于将现有的 HTTP Handler 集成到 Gin 的路由系统中,而无需重写它们。
来源: utils.go39-51
类型 H 是 map[string]any 的简写,它实现了 XML 编码
来源: utils.go53-76
Bind 工具创建了自动绑定和验证请求数据的中间件
请注意,Bind 不能与结构体指针一起使用 - 您必须直接传递结构体。
来源: utils.go19-37
Gin 在 Context 中维护一个错误列表,可用于集中式错误处理
您也可以使用自定义中间件来处理错误
您可以以编程方式获取所有已注册的路由
使用 GinS,您可以通过以下方式实现相同的功能
这对于生成文档或调试很有用。
Gin 提供了获取有关当前 Handler 信息的方法
这对于调试或生成关于哪些 Handler 处理了请求的日志很有用。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(49e913)