add request ID middleware

This commit is contained in:
Pedro Pérez 2024-11-22 14:36:44 +01:00
parent 554fb45e33
commit 2340bdca11

15
ron.go
View File

@ -111,6 +111,7 @@ func (e *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request) {
} }
e.middleware = append(e.middleware, e.timeOutMiddleware()) e.middleware = append(e.middleware, e.timeOutMiddleware())
e.middleware = append(e.middleware, e.requestIdMiddleware())
handler = createStack(e.middleware...)(handler) handler = createStack(e.middleware...)(handler)
rw := &responseWriterWrapper{ResponseWriter: w} rw := &responseWriterWrapper{ResponseWriter: w}
handler.ServeHTTP(rw, r) handler.ServeHTTP(rw, r)
@ -157,6 +158,20 @@ func (e *Engine) timeOutMiddleware() Middleware {
} }
} }
func (e *Engine) requestIdMiddleware() Middleware {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
id := r.Header.Get("X-Request-ID")
if id == "" {
id = fmt.Sprintf("%d", time.Now().UnixNano())
}
ctx = context.WithValue(ctx, "requestId", id)
next.ServeHTTP(w, r.WithContext(ctx))
})
}
}
func (e *Engine) USE(middleware Middleware) { func (e *Engine) USE(middleware Middleware) {
e.middleware = append(e.middleware, middleware) e.middleware = append(e.middleware, middleware)
} }