使用go编写的web框架 – zen
老栗子 2019-09-12 12:00:08
zen is a lightweight go framework for web development
zen是一个使用go编写的web框架,高性能,轻量级。
特性
高性能的HTTP router
Reatful API
路径参数
组API
形式验证和结构约束
JSON和XML数据绑定
内置pinic处理器
根或者组级中间件
方便的响应函数
安装
go get github.com/philchia/zen
示例
启动一个服务器
func main() {
server := zen.New()
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
}
使用 GET, POST, PUT, PATCH, DELETE
server := zen.New()
server.Get("/test",handler)
server.Post("/test", handler)
server.Put("/test",handler)
server.Patch("/test", handler)
server.Delete("/test",handler)
组线路
server := zen.New()
user := server.Group("/user")
{
user.Get("/test",handler)
user.Post("/test", handler)
user.Put("/test",handler)
user.Patch("/test", handler)
user.Delete("/test",handler)
}
添加中间件
server := zen.New()
server.Filter(func(c *zen.Context) {
log.Println("root filter")
})
组过滤器
server := zen.New()
user := server.Group("/user")
{
user.Filter(func(c *zen.Context) {
log.Println("user filter")
})
}
在路径参数
server := zen.New()
server.Get("/user/:uid",func (c *zen.Context) {
c.JSON(map[string]string{"uid": c.Param("uid")})
})
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
解析和验证输入
func handler(c *zen.Context) {
type Inputs struct {
Name string `form:"name" json:"name"`
Age int `form:"age" json:"age"`
Mail string `form:"mail" valid:"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" msg:"Illegal email" json:"mail"`
}
var input Inputs
if err := c.ParseValidForm(&input); err != nil {
c.JSON(map[string]string{"err": err.Error()})
return
}
log.Println(input)
c.JSON(input)
}
处理panic
server := zen.New()
server.HandlePanic(func(c *zen.Context, err interface{}) {
c.RawStr(fmt.Sprint(err))
})
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
处理 404
server := zen.New()
server.HandleNotFound(func(c *zen.Context) {
c.WriteStatus(StatusNotFound)
c.RawStr(StatusText(StatusNotFound))
})
if err := server.Run(":8080"); err != nil {
log.Println(err)
}