008-GoフレームMacaron使用
8062 ワード
go get github.com/Unknwon/macaron
2、デモ起動例: import "github.com/Unknwon/macaron"
func main() {
m := macaron.Classic()
m.Get("/", func() string {
return "Hello world!"
})
m.Get("/hello", func()(int, string) {
return 400, "Hello world!"
})
m.Run()
}
func() string {
return "Hello world!"
}
4、拡張例 func main() {
m := macaron.Classic()
m.Get("/",myHandler)// , m.get
m.Get("/hello/*",myHandler)// , m.get
log.Print("Server is Running.....")
//
log.Print(http.ListenAndServe("localhost:4000", m))
}
//
func myHandler(context *macaron.Context) string {
return "this request path is: " + context.Req.RequestURI;
}
5、(要求コンテキスト)同じ要求で、複数のプロセッサ間でデータを転送する func main() {
m := macaron.Classic()
m.Get("/",handler1 , handler2, handler3)
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
//
func handler1(ctx *macaron.Context) {
ctx.Data["Num"] = 1
}
func handler2(ctx *macaron.Context) {
ctx.Data["Num"] = ctx.Data["Num"].(int) + 2
}
func handler3(ctx *macaron.Context) string{
return fmt.Sprintf("Num: %d", ctx.Data["Num"])
}
6、(要求コンテキスト)パラメータを取得する func main() {
m := macaron.Classic()
m.Get("/", func(ctx *macaron.Context) string{
return ctx.Query("uid")
})
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
func main() {
m := macaron.Classic()
m.Get("/", func(ctx *macaron.Context) string{
return ctx.RemoteAddr()
})
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
8、プロセッサは処理権限を譲って、後のプロセッサに先に処理させます. func main() {
m := macaron.Classic()
m.Get("/",next1,next2,next3 )
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
func next1(ctx *macaron.Context){
fmt.Print("next1-start ")
ctx.Next();
fmt.Print("next1-exit ")
}
func next2(ctx *macaron.Context){
fmt.Print("next2-start ")
ctx.Next();
fmt.Print("next2-exit ")
}
func next3(ctx *macaron.Context) string{
fmt.Print("next3-start ")
ctx.Next();
fmt.Print("next3-exit ")
return "hello world"
}
9、クッキーの設定 func main() {
m := macaron.Classic()
m.Get("/cookie/set", setCookie)
m.Get("/cookie/get", getCookie)
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
func setCookie(ctx *macaron.Context) {
ctx.SetCookie("user", "enzoism")
ctx.SetSecureCookie("user2", "enzoism",1000)
ctx.SetSuperSecureCookie("salt","user3", "enzoism")
}
func getCookie(ctx *macaron.Context) string {
fmt.Println("-----cookie:"+ctx.GetCookie("user"))
value2,_:=ctx.GetSecureCookie("user2")
fmt.Println("-----cookie2:"+value2)
value3,_:=ctx.GetSuperSecureCookie("salt","user3")
fmt.Println("-----cookie3:"+value3)
return "Hello World!"
}
10、応答ストリーム(いずれかのプロセッサが応答したら、後のプロセッサは実行されなくなる) ctx.Resp.Write([]byte(" , !"))
return "Hello World!"
11、要求対象(任意の要求対象情報を参照) return ctx.Req.Method
12、サービス静的資源(デフォルトはpublicで、作成時にpublicパスは必要ない) func main() {
m := macaron.Classic()
m.Use(macaron.Static("public"))
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
func main() {
m := macaron.Classic()
//macaron.Env =macaron.PROD//
//
m.Use(macaron.Static("public"))
m.Get("/panic", panicHandler)
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
func panicHandler() {
panic(" , !")
}
func main() {
m := macaron.Classic()
m.Get("/log", logger)
log.Print("Server is Running.....")
log.Print(http.ListenAndServe("localhost:4000", m))
}
func logger(l *log.Logger) {
l.Println(" ")
}
コードを簡略化するpackage main
import (
"github.com/Unknwon/macaron"
"log"
"fmt"
)
// ,
func main() {
m := macaron.Classic()
//
m.Use(macaron.Static("public"))
// ,
m.Get("/", handler1, handler2, handler3)
//
m.Get("/q", queryHandler)
// IP
m.Get("/ip", ipHandler)
// ,
m.Get("/next", next1, next2, next3)
// Cookie
m.Get("/cookie/set", setCookie)
m.Get("/cookie/get", getCookie)
//
m.Get("/resp", respHandler)
//
m.Get("/req", reqHandler)
//
m.Get("/panic", panicHandler)
//
m.Get("/log", logger)
m.Run()
}
//
func handler1(ctx *macaron.Context) {
ctx.Data["Num"] = 1
}
func handler2(ctx *macaron.Context) {
ctx.Data["Num"] = ctx.Data["Num"].(int) + 2
}
func handler3(ctx *macaron.Context) string{
return fmt.Sprintf("Num: %d", ctx.Data["Num"])
}
func queryHandler(ctx *macaron.Context) {
fmt.Println(ctx.Query("uid"))
fmt.Println(ctx.QueryInt("uid"))
fmt.Println(ctx.QueryInt64("uid"))
}
func ipHandler(ctx *macaron.Context) string {
return ctx.RemoteAddr()
}
func next1(ctx *macaron.Context) {
fmt.Println(" 1 ")
ctx.Next()
fmt.Println(" 1")
}
func next2(ctx *macaron.Context) {
fmt.Println(" 2 ")
ctx.Next()
fmt.Println(" 2")
}
func next3(ctx *macaron.Context) {
fmt.Println(" 3 ")
ctx.Next()
fmt.Println(" 3")
}
func setCookie(ctx *macaron.Context) {
ctx.SetCookie("user", "wuwen")
}
func getCookie(ctx *macaron.Context) string {
return ctx.GetCookie("user")
}
func respHandler(ctx *macaron.Context) {
ctx.Resp.Write([]byte(" , !"))
}
func reqHandler(ctx *macaron.Context) string {
return ctx.Req.Method
}
func panicHandler() {
panic(" , !")
}
func logger(l *log.Logger) {
l.Println(" ")
}