http

package
v2.8.2 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2024 License: MIT Imports: 30 Imported by: 1,644

Documentation

Index

Constants

View Source
const SupportPackageIsVersion1 = true

SupportPackageIsVersion1 These constants should not be referenced from any other code.

Variables

This section is empty.

Functions

func CodecForRequest

func CodecForRequest(r *http.Request, name string) (encoding.Codec, bool)

CodecForRequest get encoding.Codec via http.Request

func CodecForResponse

func CodecForResponse(r *http.Response) encoding.Codec

CodecForResponse get encoding.Codec via http.Response

func DefaultErrorDecoder

func DefaultErrorDecoder(_ context.Context, res *http.Response) error

DefaultErrorDecoder is an HTTP error decoder.

func DefaultErrorEncoder

func DefaultErrorEncoder(w http.ResponseWriter, r *http.Request, err error)

DefaultErrorEncoder encodes the error to the HTTP response.

func DefaultRequestDecoder

func DefaultRequestDecoder(r *http.Request, v interface{}) error

DefaultRequestDecoder decodes the request body to object.

func DefaultRequestEncoder

func DefaultRequestEncoder(_ context.Context, contentType string, in interface{}) ([]byte, error)

DefaultRequestEncoder is an HTTP request encoder.

func DefaultRequestQuery added in v2.5.1

func DefaultRequestQuery(r *http.Request, v interface{}) error

DefaultRequestQuery decodes the request vars to object.

func DefaultRequestVars added in v2.5.1

func DefaultRequestVars(r *http.Request, v interface{}) error

DefaultRequestVars decodes the request vars to object.

func DefaultResponseDecoder

func DefaultResponseDecoder(_ context.Context, res *http.Response, v interface{}) error

DefaultResponseDecoder is an HTTP response decoder.

func DefaultResponseEncoder

func DefaultResponseEncoder(w http.ResponseWriter, r *http.Request, v interface{}) error

DefaultResponseEncoder encodes the object to the HTTP response.

func RequestFromServerContext added in v2.5.1

func RequestFromServerContext(ctx context.Context) (*http.Request, bool)

RequestFromServerContext returns request from context.

func SetCookie added in v2.8.0

func SetCookie(ctx context.Context, cookie *http.Cookie)

SetCookie adds a Set-Cookie header to the provided ResponseWriter's headers. The provided cookie must have a valid Name. Invalid cookies may be silently dropped.

func SetOperation

func SetOperation(ctx context.Context, op string)

SetOperation sets the transport operation.

Types

type CallOption

type CallOption interface {
	// contains filtered or unexported methods
}

CallOption configures a Call before it starts or extracts information from a Call after it completes.

func ContentType

func ContentType(contentType string) CallOption

ContentType with request content type.

func Header(header *http.Header) CallOption

Header returns a CallOptions that retrieves the http response header from server reply.

func Operation

func Operation(operation string) CallOption

Operation is serviceMethod call option

func PathTemplate

func PathTemplate(pattern string) CallOption

PathTemplate is http path template

type Client

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

Client is an HTTP client.

func NewClient

func NewClient(ctx context.Context, opts ...ClientOption) (*Client, error)

NewClient returns an HTTP client.

func (*Client) Close added in v2.0.3

func (client *Client) Close() error

Close tears down the Transport and all underlying connections.

func (*Client) Do

func (client *Client) Do(req *http.Request, opts ...CallOption) (*http.Response, error)

Do send an HTTP request and decodes the body of response into target. returns an error (of type *Error) if the response status code is not 2xx.

func (*Client) Invoke

func (client *Client) Invoke(ctx context.Context, method, path string, args interface{}, reply interface{}, opts ...CallOption) error

Invoke makes a rpc call procedure for remote service.

type ClientOption

type ClientOption func(*clientOptions)

ClientOption is HTTP client option.

func WithBlock added in v2.0.1

func WithBlock() ClientOption

WithBlock with client block.

func WithDiscovery

func WithDiscovery(d registry.Discovery) ClientOption

WithDiscovery with client discovery.

func WithEndpoint

func WithEndpoint(endpoint string) ClientOption

WithEndpoint with client addr.

func WithErrorDecoder

func WithErrorDecoder(errorDecoder DecodeErrorFunc) ClientOption

WithErrorDecoder with client error decoder.

func WithMiddleware

func WithMiddleware(m ...middleware.Middleware) ClientOption

WithMiddleware with client middleware.

func WithNodeFilter added in v2.5.0

func WithNodeFilter(filters ...selector.NodeFilter) ClientOption

WithNodeFilter with select filters

func WithRequestEncoder

func WithRequestEncoder(encoder EncodeRequestFunc) ClientOption

WithRequestEncoder with client request encoder.

func WithResponseDecoder

func WithResponseDecoder(decoder DecodeResponseFunc) ClientOption

WithResponseDecoder with client response decoder.

func WithSubset added in v2.6.1

func WithSubset(size int) ClientOption

WithSubset with client discovery subset size. zero value means subset filter disabled

func WithTLSConfig added in v2.0.5

func WithTLSConfig(c *tls.Config) ClientOption

WithTLSConfig with tls config.

func WithTimeout

func WithTimeout(d time.Duration) ClientOption

WithTimeout with client request timeout.

func WithTransport

func WithTransport(trans http.RoundTripper) ClientOption

WithTransport with client transport.

func WithUserAgent

func WithUserAgent(ua string) ClientOption

WithUserAgent with client user agent.

type ContentTypeCallOption

type ContentTypeCallOption struct {
	EmptyCallOption
	ContentType string
}

ContentTypeCallOption is BodyCallOption

type Context

type Context interface {
	context.Context
	Vars() url.Values
	Query() url.Values
	Form() url.Values
	Header() http.Header
	Request() *http.Request
	Response() http.ResponseWriter
	Middleware(middleware.Handler) middleware.Handler
	Bind(interface{}) error
	BindVars(interface{}) error
	BindQuery(interface{}) error
	BindForm(interface{}) error
	Returns(interface{}, error) error
	Result(int, interface{}) error
	JSON(int, interface{}) error
	XML(int, interface{}) error
	String(int, string) error
	Blob(int, string, []byte) error
	Stream(int, string, io.Reader) error
	Reset(http.ResponseWriter, *http.Request)
}

Context is an HTTP Context.

type DecodeErrorFunc

type DecodeErrorFunc func(ctx context.Context, res *http.Response) error

DecodeErrorFunc is decode error func.

type DecodeRequestFunc

type DecodeRequestFunc func(*http.Request, interface{}) error

DecodeRequestFunc is decode request func.

type DecodeResponseFunc

type DecodeResponseFunc func(ctx context.Context, res *http.Response, out interface{}) error

DecodeResponseFunc is response decode func.

type EmptyCallOption

type EmptyCallOption struct{}

EmptyCallOption does not alter the Call configuration. It can be embedded in another structure to carry satellite data for use by interceptors.

type EncodeErrorFunc

type EncodeErrorFunc func(http.ResponseWriter, *http.Request, error)

EncodeErrorFunc is encode error func.

type EncodeRequestFunc

type EncodeRequestFunc func(ctx context.Context, contentType string, in interface{}) (body []byte, err error)

EncodeRequestFunc is request encode func.

type EncodeResponseFunc

type EncodeResponseFunc func(http.ResponseWriter, *http.Request, interface{}) error

EncodeResponseFunc is encode response func.

type FilterFunc

type FilterFunc func(http.Handler) http.Handler

FilterFunc is a function which receives a http.Handler and returns another http.Handler.

func FilterChain

func FilterChain(filters ...FilterFunc) FilterFunc

FilterChain returns a FilterFunc that specifies the chained handler for HTTP Router.

type Flusher added in v2.4.0

type Flusher = http.Flusher

Flusher type net/http

type HandlerFunc

type HandlerFunc func(Context) error

HandlerFunc defines a function to serve HTTP requests.

type HeaderCallOption

type HeaderCallOption struct {
	EmptyCallOption
	// contains filtered or unexported fields
}

HeaderCallOption is retrieve response header for client call

type OperationCallOption

type OperationCallOption struct {
	EmptyCallOption
	Operation string
}

OperationCallOption is set ServiceMethod for client call

type PathTemplateCallOption

type PathTemplateCallOption struct {
	EmptyCallOption
	Pattern string
}

PathTemplateCallOption is set path template for client call

type Redirector added in v2.3.1

type Redirector interface {
	Redirect() (string, int)
}

Redirector replies to the request with a redirect to url which may be a path relative to the request path.

func NewRedirect added in v2.3.1

func NewRedirect(url string, code int) Redirector

NewRedirect new a redirect with url, which may be a path relative to the request path. The provided code should be in the 3xx range and is usually StatusMovedPermanently, StatusFound or StatusSeeOther. If the Content-Type header has not been set, Redirect sets it to "text/html; charset=utf-8" and writes a small HTML body. Setting the Content-Type header to any value, including nil, disables that behavior.

type Request added in v2.3.0

type Request = http.Request

Request type net/http.

type ResponseController added in v2.6.2

type ResponseController = http.ResponseController

type ResponseWriter added in v2.3.0

type ResponseWriter = http.ResponseWriter

ResponseWriter type net/http.

type RouteInfo added in v2.4.0

type RouteInfo struct {
	Path   string
	Method string
}

RouteInfo is an HTTP route info.

type Router

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

Router is an HTTP router.

func (*Router) CONNECT

func (r *Router) CONNECT(path string, h HandlerFunc, m ...FilterFunc)

CONNECT registers a new CONNECT route for a path with matching handler in the router.

func (*Router) DELETE

func (r *Router) DELETE(path string, h HandlerFunc, m ...FilterFunc)

DELETE registers a new DELETE route for a path with matching handler in the router.

func (*Router) GET

func (r *Router) GET(path string, h HandlerFunc, m ...FilterFunc)

GET registers a new GET route for a path with matching handler in the router.

func (*Router) Group added in v2.0.1

func (r *Router) Group(prefix string, filters ...FilterFunc) *Router

Group returns a new router group.

func (*Router) HEAD

func (r *Router) HEAD(path string, h HandlerFunc, m ...FilterFunc)

HEAD registers a new HEAD route for a path with matching handler in the router.

func (*Router) Handle

func (r *Router) Handle(method, relativePath string, h HandlerFunc, filters ...FilterFunc)

Handle registers a new route with a matcher for the URL path and method.

func (*Router) OPTIONS

func (r *Router) OPTIONS(path string, h HandlerFunc, m ...FilterFunc)

OPTIONS registers a new OPTIONS route for a path with matching handler in the router.

func (*Router) PATCH

func (r *Router) PATCH(path string, h HandlerFunc, m ...FilterFunc)

PATCH registers a new PATCH route for a path with matching handler in the router.

func (*Router) POST

func (r *Router) POST(path string, h HandlerFunc, m ...FilterFunc)

POST registers a new POST route for a path with matching handler in the router.

func (*Router) PUT

func (r *Router) PUT(path string, h HandlerFunc, m ...FilterFunc)

PUT registers a new PUT route for a path with matching handler in the router.

func (*Router) TRACE

func (r *Router) TRACE(path string, h HandlerFunc, m ...FilterFunc)

TRACE registers a new TRACE route for a path with matching handler in the router.

type Server

type Server struct {
	*http.Server
	// contains filtered or unexported fields
}

Server is an HTTP server wrapper.

func NewServer

func NewServer(opts ...ServerOption) *Server

NewServer creates an HTTP server by options.

func (*Server) Endpoint

func (s *Server) Endpoint() (*url.URL, error)

Endpoint return a real address to registry endpoint. examples:

https://127.0.0.1:8000
Legacy: http://127.0.0.1:8000?isSecure=false

func (*Server) Handle

func (s *Server) Handle(path string, h http.Handler)

Handle registers a new route with a matcher for the URL path.

func (*Server) HandleFunc

func (s *Server) HandleFunc(path string, h http.HandlerFunc)

HandleFunc registers a new route with a matcher for the URL path.

func (*Server) HandleHeader added in v2.1.0

func (s *Server) HandleHeader(key, val string, h http.HandlerFunc)

HandleHeader registers a new route with a matcher for the header.

func (*Server) HandlePrefix

func (s *Server) HandlePrefix(prefix string, h http.Handler)

HandlePrefix registers a new route with a matcher for the URL path prefix.

func (*Server) Route

func (s *Server) Route(prefix string, filters ...FilterFunc) *Router

Route registers an HTTP router.

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(res http.ResponseWriter, req *http.Request)

ServeHTTP should write reply headers and data to the ResponseWriter and then return.

func (*Server) Start

func (s *Server) Start(ctx context.Context) error

Start start the HTTP server.

func (*Server) Stop

func (s *Server) Stop(ctx context.Context) error

Stop stop the HTTP server.

func (*Server) Use added in v2.4.1

func (s *Server) Use(selector string, m ...middleware.Middleware)

Use uses a service middleware with selector. selector:

  • '/*'
  • '/helloworld.v1.Greeter/*'
  • '/helloworld.v1.Greeter/SayHello'

func (*Server) WalkHandle added in v2.7.0

func (s *Server) WalkHandle(handle func(method, path string, handler http.HandlerFunc)) error

WalkHandle walks the router and all its sub-routers, calling walkFn for each route in the tree.

func (*Server) WalkRoute added in v2.4.0

func (s *Server) WalkRoute(fn WalkRouteFunc) error

WalkRoute walks the router and all its sub-routers, calling walkFn for each route in the tree.

type ServerOption

type ServerOption func(*Server)

ServerOption is an HTTP server option.

func Address

func Address(addr string) ServerOption

Address with server address.

func Endpoint added in v2.0.1

func Endpoint(endpoint *url.URL) ServerOption

Endpoint with server address.

func ErrorEncoder

func ErrorEncoder(en EncodeErrorFunc) ServerOption

ErrorEncoder with error encoder.

func Filter

func Filter(filters ...FilterFunc) ServerOption

Filter with HTTP middleware option.

func Listener added in v2.1.4

func Listener(lis net.Listener) ServerOption

Listener with server lis

func Logger

func Logger(log.Logger) ServerOption

Logger with server logger. Deprecated: use global logger instead.

func MethodNotAllowedHandler added in v2.7.3

func MethodNotAllowedHandler(handler http.Handler) ServerOption

func Middleware

func Middleware(m ...middleware.Middleware) ServerOption

Middleware with service middleware option.

func Network

func Network(network string) ServerOption

Network with server network.

func NotFoundHandler added in v2.7.3

func NotFoundHandler(handler http.Handler) ServerOption

func PathPrefix added in v2.5.2

func PathPrefix(prefix string) ServerOption

PathPrefix with mux's PathPrefix, router will be replaced by a subrouter that start with prefix.

func RequestDecoder

func RequestDecoder(dec DecodeRequestFunc) ServerOption

RequestDecoder with request decoder.

func RequestQueryDecoder added in v2.5.1

func RequestQueryDecoder(dec DecodeRequestFunc) ServerOption

RequestQueryDecoder with request decoder.

func RequestVarsDecoder added in v2.5.1

func RequestVarsDecoder(dec DecodeRequestFunc) ServerOption

RequestVarsDecoder with request decoder.

func ResponseEncoder

func ResponseEncoder(en EncodeResponseFunc) ServerOption

ResponseEncoder with response encoder.

func StrictSlash added in v2.1.0

func StrictSlash(strictSlash bool) ServerOption

StrictSlash is with mux's StrictSlash If true, when the path pattern is "/path/", accessing "/path" will redirect to the former and vice versa.

func TLSConfig added in v2.0.5

func TLSConfig(c *tls.Config) ServerOption

TLSConfig with TLS config.

func Timeout

func Timeout(timeout time.Duration) ServerOption

Timeout with server timeout.

type Target

type Target struct {
	Scheme    string
	Authority string
	Endpoint  string
}

Target is resolver target

type Transport

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

Transport is an HTTP transport.

func (*Transport) Endpoint

func (tr *Transport) Endpoint() string

Endpoint returns the transport endpoint.

func (*Transport) Kind

func (tr *Transport) Kind() transport.Kind

Kind returns the transport kind.

func (*Transport) Operation

func (tr *Transport) Operation() string

Operation returns the transport operation.

func (*Transport) PathTemplate

func (tr *Transport) PathTemplate() string

PathTemplate returns the http path template.

func (*Transport) ReplyHeader

func (tr *Transport) ReplyHeader() transport.Header

ReplyHeader returns the reply header.

func (*Transport) Request

func (tr *Transport) Request() *http.Request

Request returns the HTTP request.

func (*Transport) RequestHeader

func (tr *Transport) RequestHeader() transport.Header

RequestHeader returns the request header.

type Transporter added in v2.1.0

type Transporter interface {
	transport.Transporter
	Request() *http.Request
	PathTemplate() string
}

Transporter is http Transporter

type WalkRouteFunc added in v2.4.0

type WalkRouteFunc func(RouteInfo) error

WalkRouteFunc is the type of the function called for each route visited by Walk.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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