“Pi”是一个简洁轻量高性能的路由组件,通过使用泛型来减少后端接口开发中的模版代码。
type UserData struct {
Name string
Password string
}
func h(ctx pi.Context) error {
data := &UserData{}
err := pi.Format(ctx, data)
if err != nil {
return pi.NewError(400, err.Error())
}
// do sth. actions...
return ctx.Text("hello, world!")
}
sm := pi.NewServerMux(context.Background())
sm.Route("/api/v1/users").Post(h)
http.ListenAndServe("localhost:8080", sm)
go get -u github.com/go-laeo/pi
- 基于前缀树的高性能路由功能,支持路由参数提取、通配路由等功能
-
兼容net/http
(pi.HandlerFunc
实现了http.Handler
) -
Auto使用泛型函数pi.Format[T any]()
来主动解析请求体 - 路由中间件由
pi.(ServerMux).Use()
或pi.(HandlerFunc).Connect()
进行注入 - 内置针对 SPA 应用优化的
pi.FileServer
- 无外部库依赖,无供应链攻击风险
- 完备的单元测试与性能测试
查看 _examples
目录。
Apache 2.0 License