5

私は現在、fasthttp と fasthttprouter で動作するミドルウェアを作成しようとしています。そして、私は立ち往生しています。

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

return myfunc
}

実際のハンドラーを実行するにはどうすればよいですか? 非常に単純なものが欠けているように感じます。

このブログ投稿を読みました: Middleware in Golang。しかし、私は迷っています。

何か案は?

よろしく

4

2 に答える 2

19

たとえば、次を使用して CORS を処理するミドルウェア関数を作成しましょう。

github.com/buaazp/fasthttprouterおよびgithub.com/valyala/fasthttp

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

func CORS(next fasthttp.RequestHandler) fasthttp.RequestHandler {
    return func(ctx *fasthttp.RequestCtx) {

        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)
    }
}

次に、このミドルウェア関数を Index ハンドラーにチェーンし、ルーターに登録します。

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

func main() {
    router := fasthttprouter.New()
    router.GET("/", Index)

    if err := fasthttp.ListenAndServe(":8181", CORS(router.Handler)); err != nil {
        log.Fatalf("Error in ListenAndServe: %s", err)
    }
}
于 2016-07-25T19:39:06.377 に答える