middleware/request_id.go
func RequestID(next http.Handler) http.Handler {
	fn := func(w http.ResponseWriter, r *http.Request) {
		ctx := r.Context()
		requestID := r.Header.Get("X-Request-Id")
		if requestID == "" {
			myid := atomic.AddUint64(&reqid, 1)
			requestID = fmt.Sprintf("%s-%06d", prefix, myid)
		}
		ctx = context.WithValue(ctx, RequestIDKey, requestID)
		next.ServeHTTP(w, r.WithContext(ctx))
	}
	return http.HandlerFunc(fn)
}
func RequestID(next http.Handler) http.Handler {
	fn := func(w http.ResponseWriter, r *http.Request) {
		ctx := r.Context()
		requestID := r.Header.Get("X-Request-Id")
		if requestID == "" {
			myid := atomic.AddUint64(&reqid, 1)
			requestID = fmt.Sprintf("%s-%06d", prefix, myid)
		}
		ctx = context.WithValue(ctx, RequestIDKey, requestID)
		next.ServeHTTP(w, r.WithContext(ctx))
	}
	return http.HandlerFunc(fn)
}
func RequestID ( next http . Handler ) http . Handler { fn := func ( w http . ResponseWriter , r * http . Request ) { ctx := r . Context ( ) requestID := r . Header . Get ( " " ) if requestID == " " { myid := atomic . AddUint64 ( & reqid , 1 ) requestID = fmt . Sprintf ( " " , prefix , myid ) } ctx = context . WithValue ( ctx , RequestIDKey , requestID ) next . ServeHTTP ( w , r . WithContext ( ctx ) ) } return http . HandlerFunc ( fn ) }
// RequestID is a middleware that injects a request ID into the context of each
// request. A request ID is a string of the form "host.example.com/random-0001",
// where "random" is a base62 random string that uniquely identifies this go
// process, and where the last number is an atomically incremented request
// counter.
RequestID is a middleware that injects a request ID into the context of each request . A request ID is a string of the form host . example . com / random - 0001 where random is a base62 random string that uniquely identifies this go process and where the last number is an atomically incremented request counter .