nethttp

package
v0.0.24 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// RequestIDHeaderKey 补充的RequestID Header Key
	RequestIDHeaderKey = "X-Request-Id"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientOption

type ClientOption func(*clientOptions)

ClientOption contols the behavior of TraceRequest.

func ClientSpanObserver

func ClientSpanObserver(f func(span opentracing.Span, r *http.Request)) ClientOption

ClientSpanObserver returns a ClientOption that observes the span for the client-side span.

func ClientTrace

func ClientTrace(enabled bool) ClientOption

ClientTrace returns a ClientOption that turns on or off extra instrumentation via httptrace.WithClientTrace.

func ComponentName

func ComponentName(componentName string) ClientOption

ComponentName returns a ClientOption that sets the component name for the client-side span.

func InjectSpanContext

func InjectSpanContext(enabled bool) ClientOption

InjectSpanContext returns a ClientOption that turns on or off injection of the Span context in the request HTTP headers. If this option is not used, the default behaviour is to inject the span context.

func OperationName

func OperationName(operationName string) ClientOption

OperationName returns a ClientOption that sets the operation name for the client-side span.

type Tracer

type Tracer struct {
	// contains filtered or unexported fields
}

Tracer holds tracing details for one HTTP request.

func TraceRequest

func TraceRequest(tr opentracing.Tracer, req *http.Request, options ...ClientOption) (*http.Request, *Tracer)

TraceRequest adds a ClientTracer to req, tracing the request and all requests caused due to redirects. When tracing requests this way you must also use Transport.

Example:

func AskGoogle(ctx context.Context) error {
	client := &http.Client{Transport: &nethttp.Transport{}}
	req, err := http.NewRequest("GET", "http://google.com", nil)
	if err != nil {
		return err
	}
	req = req.WithContext(ctx) // extend existing trace, if any

	req, ht := nethttp.TraceRequest(tracer, req)
	defer ht.Finish()

	res, err := client.Do(req)
	if err != nil {
		return err
	}
	res.Body.Close()
	return nil
}

func TracerFromRequest

func TracerFromRequest(req *http.Request) *Tracer

TracerFromRequest retrieves the Tracer from the request. If the request does not have a Tracer it will return nil.

func (*Tracer) Finish

func (h *Tracer) Finish()

Finish finishes the span of the traced request.

func (*Tracer) Span

func (h *Tracer) Span() opentracing.Span

Span returns the root span of the traced request. This function should only be called after the request has been executed.

type Transport

type Transport struct {
	// The actual RoundTripper to use for the request. A nil
	// RoundTripper defaults to http.DefaultTransport.
	http.RoundTripper
}

Transport wraps a RoundTripper. If a request is being traced with Tracer, Transport will inject the current span into the headers, and set HTTP related tags on the span.

func (*Transport) RoundTrip

func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error)

RoundTrip implements the RoundTripper interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL