From c5792a3953447f41086f41cb35e0b190e3320c4f Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 21 Oct 2020 20:14:12 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=93=A6=20Add=20the=20request=20ID=20t?= =?UTF-8?q?o=20locals?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- middleware/requestid/README.md | 18 +++++++++++------- middleware/requestid/requestid.go | 13 +++++++++++++ middleware/requestid/requestid_test.go | 25 +++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/middleware/requestid/README.md b/middleware/requestid/README.md index 07bdde0b9f..d43da8f561 100644 --- a/middleware/requestid/README.md +++ b/middleware/requestid/README.md @@ -52,21 +52,25 @@ type Config struct { // Generator defines a function to generate the unique identifier. // - // Optional. Default: func() string { - // return utils.UUID() - // } + // Optional. Default: utils.UUID Generator func() string + + // ContextKey defines the key used when storing the request ID in + // the locals for a specific request. + // + // Optional. Default: requestId + ContextKey string } ``` ### Default Config ```go var ConfigDefault = Config{ - Next: nil, - Header: fiber.HeaderXRequestID, - Generator: func() string { + Next: nil, + Header: fiber.HeaderXRequestID, + Generator: func() string { return utils.UUID() }, + ContextKey: "requestId" } - ``` diff --git a/middleware/requestid/requestid.go b/middleware/requestid/requestid.go index ef0de78a1e..aefdd9f8c1 100644 --- a/middleware/requestid/requestid.go +++ b/middleware/requestid/requestid.go @@ -21,6 +21,12 @@ type Config struct { // // Optional. Default: utils.UUID Generator func() string + + // ContextKey defines the key used when storing the request ID in + // the locals for a specific request. + // + // Optional. Default: requestId + ContextKey string } // ConfigDefault is the default config @@ -28,6 +34,7 @@ var ConfigDefault = Config{ Next: nil, Header: fiber.HeaderXRequestID, Generator: utils.UUID, + ContextKey: "requestId", } // New creates a new middleware handler @@ -46,6 +53,9 @@ func New(config ...Config) fiber.Handler { if cfg.Generator == nil { cfg.Generator = ConfigDefault.Generator } + if cfg.ContextKey == "" { + cfg.ContextKey = ConfigDefault.ContextKey + } } // Return new handler @@ -60,6 +70,9 @@ func New(config ...Config) fiber.Handler { // Set new id to response header c.Set(cfg.Header, rid) + // Add the request ID to locals + c.Locals(cfg.ContextKey, rid) + // Continue stack return c.Next() } diff --git a/middleware/requestid/requestid_test.go b/middleware/requestid/requestid_test.go index 5903de2a3c..c2d211c851 100644 --- a/middleware/requestid/requestid_test.go +++ b/middleware/requestid/requestid_test.go @@ -48,3 +48,28 @@ func Test_RequestID_Next(t *testing.T) { utils.AssertEqual(t, resp.Header.Get(fiber.HeaderXRequestID), "") utils.AssertEqual(t, fiber.StatusNotFound, resp.StatusCode) } + +// go test -run Test_RequestID_Locals +func Test_RequestID_Locals(t *testing.T) { + reqId := "ThisIsARequestId" + ctxKey := "ThisIsAContextKey" + + app := fiber.New() + app.Use(New(Config{ + Generator: func() string { + return reqId + }, + ContextKey: ctxKey, + })) + + var ctxVal string + + app.Use(func (c *fiber.Ctx) error { + ctxVal = c.Locals(ctxKey).(string) + return c.Next() + }) + + _, err := app.Test(httptest.NewRequest("GET", "/", nil)) + utils.AssertEqual(t, nil, err) + utils.AssertEqual(t, reqId, ctxVal) +} \ No newline at end of file From 7eaf3c07b1be1cda6d5413e6cd7eb651fcec9a4c Mon Sep 17 00:00:00 2001 From: Tom Date: Thu, 22 Oct 2020 10:00:06 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=93=A6=20Change=20requestId=20->=20re?= =?UTF-8?q?questid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- middleware/requestid/README.md | 4 ++-- middleware/requestid/requestid.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/middleware/requestid/README.md b/middleware/requestid/README.md index d43da8f561..13f5f053f8 100644 --- a/middleware/requestid/README.md +++ b/middleware/requestid/README.md @@ -58,7 +58,7 @@ type Config struct { // ContextKey defines the key used when storing the request ID in // the locals for a specific request. // - // Optional. Default: requestId + // Optional. Default: requestid ContextKey string } ``` @@ -71,6 +71,6 @@ var ConfigDefault = Config{ Generator: func() string { return utils.UUID() }, - ContextKey: "requestId" + ContextKey: "requestid" } ``` diff --git a/middleware/requestid/requestid.go b/middleware/requestid/requestid.go index aefdd9f8c1..0a5a11a5a8 100644 --- a/middleware/requestid/requestid.go +++ b/middleware/requestid/requestid.go @@ -25,7 +25,7 @@ type Config struct { // ContextKey defines the key used when storing the request ID in // the locals for a specific request. // - // Optional. Default: requestId + // Optional. Default: requestid ContextKey string } @@ -34,7 +34,7 @@ var ConfigDefault = Config{ Next: nil, Header: fiber.HeaderXRequestID, Generator: utils.UUID, - ContextKey: "requestId", + ContextKey: "requestid", } // New creates a new middleware handler