Есть ли возможность получить текущий объект запроса (структуру) вне http.HandlerFun c? Я сталкиваюсь с проблемой, что мне нужен уникальный случайный ха sh только для запроса, я не могу использовать глобальную переменную, потому что в случае, если мое приложение будет обрабатывать 2 или более запросов одновременно, каждый запрос будет переопределять значение глобальной переменной.
Я понял, что могу использовать контекст следующим образом:
func Init() Middleware {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
ctx := context.WithValue(request.Context(), "requestId", GetRequestHash())
next.ServeHTTP(writer, request.WithContext(ctx))
})
}
}
Затем в HandlerFun c я могу получить этот уникальный ха sh
request.Context().Value("requestId")
, но проблема в том, что мне нужно это значение очень глубоко в моем приложении, и я не могу просто передать это ha sh параметром. У меня уже есть много обработчиков, и эти обработчики вызывают функцию, которая вызывает другую ... Мне нужно что-то вроде http.GetCurrentRequest
где-то за пределами HandlerFun c, чтобы получить контекст запроса и, наконец, получить requestId (уникальный ha sh для запроса).
Очевидно, я не могу просто сохранить это значение ha sh как глобальную переменную, поскольку оно будет переопределено другим запросом ...