zen is a lightweight go framework for web development
zen is a web framework written by go, you will love it if you preffer high performance and lightweight!!!
Installation
go get github.com/philchia/zen
How to
Start a server
func main() {
server := zen.New()
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
}
Using 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.Del("/test",handler)
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
Parameters in path
server := zen.New()
server.Get("/user/:uid",func (c *Context) {
c.JSON(map[string]string{"uid": c.Param(":uid")})
})
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
Parse and validate input
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)
}
Use middleware
server := zen.New()
server.Filter(filter)
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
Use pprof
server := zen.New()
server.PProf("/debug/pprof")
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
Handle 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)
}
Handle 404
server := zen.New()
server.HandleNotFound(func(c *zen.Context) {
c.WriteStatus(http.StatusNotFound)
c.RawStr("page not found")
})
if err := server.Run(":8080"); err != nil {
log.Println(err)
}
Todo
- More elegant filter implement
- Graceful restart based on go 1.8
- Handle redirect
- Increase test coverage
- Documents
License
zen is published under MIT license