feat: some refactoring
This commit is contained in:
33
internal/apiserver/middleware/request_id.go
Normal file
33
internal/apiserver/middleware/request_id.go
Normal file
@@ -0,0 +1,33 @@
|
||||
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))
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user