Grape 是一个现代的、零依赖的 Go HTTP 库。
它是标准库的一个薄包装,提供帮助函数以促进更快、更轻松的开发。仅向您的项目添加一个依赖项。
Go 标准库非常棒。它快速、易用,而且拥有出色的 API。
在 go 1.21 中增加了 log/slog,在 go 1.22 中改进了 HTTP 路由器,在大多数情况下,没有太多理由再去寻找更多。Grape 的目标不是破坏与 net/http 的兼容性,而是在处理程序触手可及的范围内添加常用函数。
特征
- 零依赖,100%兼容标准库
- 使用log/slog进行结构化日志记录
- 使用新的、改进的net/http路由器
- 组路由和特定范围的中间件
- 通过encoding/json读写json
- 高度可定制;带上你自己的记录器和序列化器!
- 用于常用 HTTP 状态代码响应的辅助函数
- validator具有用于数据验证的内置包
用法
主要的使用模式是将 Grape 嵌入结构体中,处理程序是结构体的一个方法,与模型、设置等其他字段相邻。
在这种方法中,不需要改变处理程序的参数来接受特定的上下文;所有的辅助方法都可以通过接收器使用。
package main |
- grape.Server
提供日志记录、与 json 交互、常见 HTTP 响应和其他一些有用实用程序的方法。它可以嵌入到结构体中,作为常规字段放置,实例化为全局变量,甚至可以通过上下文传递。它的实例是通过运行创建的grape.New(),并且可以通过grape.Options 作为参数传递来自定义其行为。
- *grape.Router
通过以 HTTP 动词命名的方法启用路由,并使用路由分组和特定于范围的中间件。通过运行创建一个新实例grape.NewRouter()。所有路由都在服务器启动时注册,其余路由由标准库处理,从而实现零运行时开销。
- validator包
提供广泛的数据验证功能。使用 启动一个新实例validator.New(),然后Check数据的每个部分都包含Case必要的数量。