SweetyGo:使用Golang编写的简单,轻量和快速的Web框架
SweetyGo:使用Golang编写的简单,轻量和快速的Web框架
SweetyGo
SweetyGo is a simple, light and fast Web framework written in Go.
The source is easy to learn, then you can make your own Go Web Framework!
Features
Pretty and fast router - based on radix treeMiddleware SupportFriendly to REST APINo regexp or reflectQUIC SupportInspired by many excellent Go Web framework
Installation
go get github.com/AmyangXYZ/sweetygo
Example
Simple
package mainimport ( "github.com/AmyangXYZ/sweetygo")func main() { app := sweetygo.New() app.GET("/", func(ctx *sweetygo.Context) error { return ctx.Text(200, "Hello Sweetie") }) app.Run(":16311")}
Further
package mainimport ( "html/template" "net/http" "os" "time" "github.com/AmyangXYZ/sweetygo" "github.com/AmyangXYZ/sweetygo/middlewares" "github.com/dgrijalva/jwt-go")var ( tplDir = "templates" listenPort = ":16311" secretKey = "CuteSweetie" jwtSkipper = func(ctx *sweetygo.Context) bool { if ctx.Path() == "/" || (ctx.Path() == "/api" && ctx.Method() == "GET") || (ctx.Path() == "/login" && ctx.Method() == "POST") || (len(ctx.Path()) > 8 && ctx.Path()[0:8] == "/static/") { return true } return false })func main() { app := sweetygo.New() app.SetTemplates(tplDir, template.FuncMap{}) app.USE(middlewares.Logger(os.Stdout, middlewares.DefaultSkipper)) app.USE(middlewares.JWT("Header", secretKey, jwtSkipper)) app.GET("/", home) app.GET("/static/*files", static) app.GET("/api", biu) app.POST("/api", hello) app.POST("/login", login) app.GET("/usr/:user", usr) app.Run(listenPort) // Or use QUIC // app.RunOverQUIC(listenPort, "fullchain.pem", "privkey.pem")}func home(ctx *sweetygo.Context) { ctx.Set("baby", "Sweetie") ctx.Render(200, "index")}func static(ctx *sweetygo.Context) { staticHandle := http.StripPrefix("/static", http.FileServer(http.Dir("./static"))) staticHandle.ServeHTTP(ctx.Resp, ctx.Req)}func biu(ctx *sweetygo.Context) { ctx.Text(200, "biu")}func login(ctx *sweetygo.Context) { usr := ctx.Param("usr") pwd := ctx.Param("pwd") if usr == "Amyang" && pwd == "biu" { token := jwt.New(jwt.SigningMethodHS256) claims := token.Claims.(jwt.MapClaims) claims["name"] = "Amyang" claims["admin"] = true claims["exp"] = time.Now().Add(time.Hour * 72).Unix() t, _ := token.SignedString([]byte(secretKey)) ctx.JSON(200, 1, "success", map[string]string{"SG_Token": t}) return } ctx.JSON(200, 0, "username or password error", nil)}func api(ctx *sweetygo.Context) { ctx.JSON(200, 1, "success", map[string]string{"version": "1.1"})}func hello(ctx *sweetygo.Context) { usr := ctx.Get("userInfo").(*jwt.Token) claims := usr.Claims.(jwt.MapClaims) name := claims["name"].(string) ctx.Text(200, "Hello "+name)}func usr(ctx *sweetygo.Context) { ctx.Text(200, "Welcome home, "+ctx.Param("user"))}
My Blog is also powered by SweetyGo.
License
MIT
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~