// JSON数据绑定
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
var user User
// 绑定JSON数据(使用配置的JSON解码器)
if err := c.ShouldBindJSON(&user); err != nil {
c.Status(400).JSON(map[string]string{"error": err.Error()})
return
}
// 绑定JSON数据并自动处理错误
if err := c.BindJSON(&user); err != nil {
return // 自动返回400错误
}
Gnet-Mux
一个基于 gnet/v2 的高性能 Web 框架,提供类似 Gin 的 API 风格。
功能特性
gnet/v2
的事件驱动架构/user/:id
)goccy/go-json
、json-iterator
)gorilla/websocket
的 WebSocket 连接支持快速开始
安装
基本用法
API 文档
创建引擎
路由注册
中间件
自定义JSON配置
框架支持使用第三方JSON序列化库,提供更好的性能或特定功能:
配置选项:
JSONEncoder
: 自定义JSON编码函数,用于c.JSON()
响应JSONDecoder
: 自定义JSON解码函数,用于c.ShouldBindJSON()
和c.BindJSON()
XMLEncoder
: 自定义XML编码函数,用于c.XML()
响应YAMLEncoder
: 自定义YAML编码函数,用于c.YAML()
响应ProtoBufEncoder
: 自定义ProtoBuf编码函数,用于c.ProtoBuf()
响应自定义编码器配置
框架支持自定义各种格式的编码器:
路径参数
框架支持动态路由参数,使用
:
前缀定义参数:路由匹配规则:
路由分组
框架支持路由分组,可以为一组路由设置共同的前缀和中间件:
分组特性:
模糊路由(通配符路由)
框架支持模糊路由(通配符路由),与 Gin 框架 API 完全兼容:
基本用法
匹配示例
路由优先级
通配符路由具有最低优先级,具体路由和参数路由优先匹配:
模糊路由特性:
Cookie 管理
框架提供了完整的 Cookie 管理功能,与 Gin 框架 API 完全兼容:
Cookie 特性:
静态文件服务
框架提供了完整的静态文件服务功能,与 Gin 框架 API 完全兼容:
静态文件特性:
使用示例:
文件上传
框架提供了完整的文件上传功能,与 Gin 框架 API 完全兼容:
单文件上传
多文件上传
文件上传特性:
重要提示:
file.Filename
不应该被信任。参考 MDN Content-Disposition 文档上下文方法
获取请求数据
设置响应
JSON数据绑定
上下文存储
中间件控制
示例
完整示例
自定义中间件示例
性能
基于 gnet/v2 的高性能网络引擎,相比传统的 net/http 具有更好的性能表现:
与 Gin 的对比
WebSocket 支持
框架支持 WebSocket 连接,使用
gorilla/websocket
库:WebSocket 特性:
gorilla/websocket
库c.Writer()
和c.Request()
方法用于 WebSocket 升级c.UpgradeWebSocket()
便捷方法注意事项
贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT License