Blazing fast Go Web Framework
####Installation
go get github.com/plimble/ace
import "github.com/plimble/ace"
Ace is very fast you can see on this
##Usage
a := ace.New()
a.GET("/", func(c *ace.C) {
name := c.Params.ByName("name")
c.JSON(200, map[string]string{"hello": name})
}
a.Run(":8080")
Default Middleware (Logger, Recovery)
a := ace.Default()
a.GET("/", func(c *ace.C) {
c.String(200,"Hello ACE")
}
a.Run(":8080")
a.DELETE("/", HandlerFunc)
a.HEAD("/", HandlerFunc)
a.OPTIONS("/", HandlerFunc)
a.PATCH("/", HandlerFunc)
a.PUT("/", HandlerFunc)
a.POST("/", HandlerFunc)
a.GET("/", HandlerFunc)
a := ace.New()
a.GET("/", func(c *ace.C){
c.String(200, "Hello world")
})
a.POST("/form/:id/:name", func(c *ace.C){
id := c.Params.ByName("id")
name := c.Params.ByName("name")
age := c.Request.PostFormValue("age")
})
data := struct{
Name string `json:"name"`
}{
Name: "John Doe",
}
c.JSON(200, data)
c.String(200, "Hello Ace")
//application/octet-stream
c.Download(200, []byte("Hello Ace"))
c.HTML("index.html")
c.Redirect("/home")
g := a.Group("/people", func(c *ace.C) {
fmt.Println("before route func")
c.Next()
})
// /people/:name
g.GET("/:name", func(c *ace.C) {
c.JSON(200, map[string]string{"TEST": "GET METHOD"})
})
// /people/:name
g.POST("/:name", func(c *ace.C) {
c.JSON(200, map[string]string{"TEST": "POST METHOD"})
})
Set/Get data in any HandlerFunc
a.Use(func(c *ace.C){
c.SetData("isLogin", true)
})
a.Get("/", func(c *ace.C){
isLogin := c.GetData("isLogin").(bool)
//or get all data
//c.GetAllData()
})
Ace middleware is implemented by custom handler
type HandlerFunc func(c *C)
#####Example
a := ace.New()
a.Use(ace.Logger())
a.Static("/assets", "./img")
var store = sessions.NewCookieStore([]byte("something-very-secret"))
a.UseSession("cookie", store, nil)
a.GET("/hello", func(c *ace.C) {
c.Session.SetString("name", "John Doe")
fmt.Println(c.Session.GetString("name"))
}
a.Use(ace.Logger())
a.Use(ace.Recovery())
Ace built on renderer interface. So you can use any template engine
type Renderer interface {
Render(w http.ResponseWriter, name string, data interface{})
}
Name | Description |
---|---|
gzip | GZIP compress |
cors | Enable Cross-origin resource sharing (CORS) |
sessions | Gorilla Sessions |
pongo2 | Pongo2 Template Engine |
csrf | Cross Site Request Forgery protection |
###Contributing
If you'd like to help out with the project. You can put up a Pull Request.