pull/453/head
Fenny 2020-06-07 10:13:50 +02:00
parent 15b0630ede
commit 22555c0806
7 changed files with 80 additions and 1 deletions

2
app.go
View File

@ -558,7 +558,7 @@ func (app *App) init() *App {
} else {
ctx.err = ErrBadRequest
}
app.Settings.ErrorHandler(ctx, ctx.err) // ctx.Route() not available
app.Settings.ErrorHandler(ctx, ctx.err)
app.ReleaseCtx(ctx)
},
}

8
ctx.go
View File

@ -777,6 +777,14 @@ func (ctx *Ctx) Render(name string, bind interface{}) (err error) {
// Route returns the matched Route struct.
func (ctx *Ctx) Route() *Route {
if ctx.route == nil {
// Fallback for fasthttp error handler
return &Route{
Path: ctx.pathOriginal,
Method: ctx.method,
Handlers: make([]Handler, 0),
}
}
return ctx.route
}

0
middleware/compress.md Normal file
View File

0
middleware/helmet.md Normal file
View File

0
middleware/logger.md Normal file
View File

0
middleware/recover.md Normal file
View File

71
middleware/request_id.md Normal file
View File

@ -0,0 +1,71 @@
# Request ID
Adds an indentifier to the response using the `X-Request-ID` header
### Signatures
```go
func RequestID(header ...string) fiber.Handler {}
func RequestIDWithConfig(config RequestIDConfig) fiber.Handler {}
```
### Config
```go
type RequestIDConfig struct {
// Next defines a function to skip this middleware.
Next func(ctx *fiber.Ctx) bool
// Header is the header key where to get/set the unique ID
// Optiona. Defaults: X-Request-ID
Header string
// Generator defines a function to generate the unique identifier.
// Optional. Default: func() string {
// return utils.UUID()
// }
Generator func() string
}
```
### Default Config
```go
var RequestIDConfigDefault = RequestIDConfig{
Next: nil,
Header: fiber.HeaderXRequestID,
Generator: func() string {
return utils.UUID()
},
}
```
### Example
```go
package main
import (
"github.com/gofiber/fiber"
"github.com/gofiber/middleware"
)
func main() {
app := fiber.New()
// Default
app.Use(middleware.RequestID())
// Custom Header
app.Use(middleware.RequestID("X-Custom-Header"))
// Custom Config
app.Use(middleware.RequestID(middleware.RequestIDConfig{
Next: func(ctx *fiber.Ctx) bool {
return ctx.Method() != fiber.MethodPost
},
Header: "X-Custom-Header",
Generator: func() string {
return "1234567890"
}
}))
app.Listen(3000)
}
```