package middleware import ( "context" "net/http" "git.nwaifu.su/sergey/MyGoServer/internal/apiserver/logger" "github.com/google/uuid" ) // RequestIDMiddleware adds a unique request ID to each request func RequestIDMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Generate a new request ID requestID := uuid.New().String() // Set request ID in response header w.Header().Set("X-Request-ID", requestID) // Add request ID to context ctx := r.Context() ctx = context.WithValue(ctx, "request_id", requestID) // Log the request ID assignment logger := logger.GetLogger() logger.WithFields(map[string]interface{}{ "request_id": requestID, }).Debug("Request ID assigned") // Continue with the request next.ServeHTTP(w, r.WithContext(ctx)) }) }