2016-07-24 43 views
2

Ich versuche derzeit etwas Middleware zu schreiben, um mit Fasthttp und Fasthttprouter zu arbeiten. Und ich stecke fest.Fasthttp + fasthttprouter, versuchen, Middleware zu schreiben

func jwt(h fasthttprouter.Handle) fasthttprouter.Handle { 
myfunc := func(ctx *fasthttp.RequestCtx, _ fasthttprouter.Params) { 
    fmt.Println(string(ctx.Request.Header.Cookie("Authorization"))) 
} 

return myfunc 
} 

Wie führe ich den tatsächlichen Handler jetzt? Ich fühle mich, als würde ich etwas sehr einfaches vermissen.

Ich habe diesen Blogpost gelesen: Middleware in Golang. Aber ich bin verloren.

Irgendwelche Ideen?

Grüße

Antwort

4

zum Beispiel, lassen Sie uns eine Middleware-Funktion erstellen, die CORS mit behandelt:

github.com/buaazp/fasthttprouter und github.com/valyala/fasthttp

var ( 
    corsAllowHeaders  = "authorization" 
    corsAllowMethods  ="HEAD,GET,POST,PUT,DELETE,OPTIONS" 
    corsAllowOrigin  = "*" 
    corsAllowCredentials = "true"  
) 

func CORS(next fasthttprouter.Handle) fasthttprouter.Handle { 
    return fasthttprouter.Handle(func(ctx *fasthttp.RequestCtx, p fasthttprouter.Params) { 

    ctx.Response.Header.Set("Access-Control-Allow-Credentials", corsAllowCredentials) 
    ctx.Response.Header.Set("Access-Control-Allow-Headers", corsAllowHeaders) 
    ctx.Response.Header.Set("Access-Control-Allow-Methods", corsAllowMethods) 
    ctx.Response.Header.Set("Access-Control-Allow-Origin", corsAllowOrigin) 

    next(ctx, p) 
}) 
} 

Nun verketten wir diese Middleware-Funktion auf unserer Index-Handler und registrieren Sie es auf dem Router.

func Index(ctx *fasthttp.RequestCtx, _ fasthttprouter.Params) { 
    fmt.Fprint(ctx, "some-api") 
} 

func main() { 
    var handler fasthttprouter.Handle 
    handler = Index 
    handler = CORS(handler) 

    router.Handle("GET", "/", handler) 
} 
+0

Mein Gott .... beim Betrachten scheint es klar wie der Tag. Vielen herzlichen Dank. –

+0

Sie sind herzlich willkommen :) – Brrrr

+0

Ich habe diese Fehler: undefined: fasthttprouter.Handler undefined: fasthttprouter.Params was soll ich tun? – aldo