Documentation ¶
Index ¶
- Constants
- func CodecForRequest(r *http.Request, name string) (encoding.Codec, bool)
- func CodecForResponse(r *http.Response) encoding.Codec
- func DefaultErrorDecoder(_ context.Context, res *http.Response) error
- func DefaultErrorEncoder(c Context, err error)
- func DefaultRequestDecoder(r *http.Request, v interface{}) error
- func DefaultRequestEncoder(_ context.Context, contentType string, in interface{}) ([]byte, error)
- func DefaultRequestQuery(r *http.Request, v interface{}) error
- func DefaultRequestVars(r *http.Request, v interface{}) error
- func DefaultResponseDecoder(_ context.Context, res *http.Response, v interface{}) error
- func DefaultResponseEncoder(w http.ResponseWriter, r *http.Request, v interface{}) error
- func RequestFromServerContext(ctx context.Context) (*http.Request, bool)
- func SetOperation(ctx context.Context, op string)
- type BaseHandler
- type CallOption
- type Client
- type ClientOption
- func WithBlock() ClientOption
- func WithConfig(cfg *anypb.Any) ClientOption
- func WithDiscovery(d registry.Discovery) ClientOption
- func WithEndpoint(endpoint string) ClientOption
- func WithErrorDecoder(errorDecoder DecodeErrorFunc) ClientOption
- func WithMiddleware(m ...middleware.Middleware) ClientOption
- func WithNodeFilter(filters ...selector.NodeFilter) ClientOption
- func WithRequestEncoder(encoder EncodeRequestFunc) ClientOption
- func WithResponseDecoder(decoder DecodeResponseFunc) ClientOption
- func WithSubset(size int) ClientOption
- func WithTLSConfig(c *tls.Config) ClientOption
- func WithTimeout(d time.Duration) ClientOption
- func WithTransport(trans http.RoundTripper) ClientOption
- func WithUserAgent(ua string) ClientOption
- type ContentTypeCallOption
- type Context
- type CustomResponse
- type DecodeErrorFunc
- type DecodeRequestFunc
- type DecodeResponseFunc
- type EmptyCallOption
- type EncodeErrorFunc
- type EncodeRequestFunc
- type EncodeResponseFunc
- type FilterFunc
- type Flusher
- type Handler
- type HandlerFunc
- type HeaderCallOption
- type MiddlewareFunc
- type OperationCallOption
- type PathTemplateCallOption
- type Redirector
- type Request
- type Response
- type ResponseController
- type ResponseWriter
- type RouteInfo
- type Router
- type Server
- func (s *Server) Endpoint() (*url.URL, error)
- func (s *Server) Handle(path string, h http.Handler)
- func (s *Server) HandleFunc(path string, h http.HandlerFunc)
- func (s *Server) HandleHeader(key, val string, h http.HandlerFunc)
- func (s *Server) HandlePrefix(prefix string, h http.Handler)
- func (s *Server) NewHandler(handler Handler, middlewares ...MiddlewareFunc)
- func (s *Server) Route(prefix string, middlewares ...MiddlewareFunc) Router
- func (s *Server) ServeHTTP(res http.ResponseWriter, req *http.Request)
- func (s *Server) Start(ctx context.Context) error
- func (s *Server) Stop(ctx context.Context) error
- func (s *Server) Use(selector string, m ...middleware.Middleware)
- func (s *Server) WalkHandle(handle func(method, path string, handler http.HandlerFunc)) error
- func (s *Server) WalkRoute(fn WalkRouteFunc) error
- type ServerOption
- func Address(addr string) ServerOption
- func Endpoint(endpoint *url.URL) ServerOption
- func ErrorEncoder(en EncodeErrorFunc) ServerOption
- func Filter(filters ...FilterFunc) ServerOption
- func Listener(lis net.Listener) ServerOption
- func Logger(_ log.Logger) ServerOption
- func Middleware(m ...middleware.Middleware) ServerOption
- func Network(network string) ServerOption
- func PathPrefix(prefix string) ServerOption
- func RequestDecoder(dec DecodeRequestFunc) ServerOption
- func RequestQueryDecoder(dec DecodeRequestFunc) ServerOption
- func RequestVarsDecoder(dec DecodeRequestFunc) ServerOption
- func ResponseEncoder(en EncodeResponseFunc) ServerOption
- func StrictSlash(strictSlash bool) ServerOption
- func TLSConfig(c *tls.Config) ServerOption
- func Timeout(timeout time.Duration) ServerOption
- type Target
- type Transport
- func (tr *Transport) Endpoint() string
- func (tr *Transport) Kind() transport.Kind
- func (tr *Transport) Operation() string
- func (tr *Transport) PathTemplate() string
- func (tr *Transport) ReplyHeader() transport.Header
- func (tr *Transport) Request() *http.Request
- func (tr *Transport) RequestHeader() transport.Header
- type Transporter
- type WalkRouteFunc
Constants ¶
const SupportPackageIsVersion1 = true
SupportPackageIsVersion1 These constants should not be referenced from any other code.
Variables ¶
This section is empty.
Functions ¶
func CodecForRequest ¶
CodecForRequest get encoding.Codec via http.Request
func CodecForResponse ¶
CodecForResponse get encoding.Codec via http.Response
func DefaultErrorDecoder ¶
DefaultErrorDecoder is an HTTP error decoder.
func DefaultErrorEncoder ¶
DefaultErrorEncoder encodes the error to the HTTP response.
func DefaultRequestDecoder ¶
DefaultRequestDecoder decodes the request body to object.
func DefaultRequestEncoder ¶
DefaultRequestEncoder is an HTTP request encoder.
func DefaultRequestQuery ¶
DefaultRequestQuery decodes the request vars to object.
func DefaultRequestVars ¶
DefaultRequestVars decodes the request vars to object.
func DefaultResponseDecoder ¶
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 ¶
RequestFromServerContext returns request from context.
func SetOperation ¶
SetOperation sets the transport operation.
Types ¶
type BaseHandler ¶
type BaseHandler struct{}
func (*BaseHandler) Handle ¶
func (h *BaseHandler) Handle(router Router)
func (*BaseHandler) Prefix ¶
func (h *BaseHandler) Prefix() string
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 ¶
func Header(header *http.Header) CallOption
Header returns a CallOptions that retrieves the http response header from server reply.
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.
type ClientOption ¶
type ClientOption func(*clientOptions)
ClientOption is HTTP client option.
func WithConfig ¶ added in v1.0.4
func WithConfig(cfg *anypb.Any) ClientOption
WithConfig with client config.
func WithDiscovery ¶
func WithDiscovery(d registry.Discovery) ClientOption
WithDiscovery with client discovery.
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 ¶
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 ¶
func WithSubset(size int) ClientOption
WithSubset with client disocvery subset size. zero value means subset filter disabled
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 SetRequest(r *http.Request) Response() *Response SetResponse(r *Response) 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.
func NewContext ¶
func NewContext(r *router, req *http.Request, w http.ResponseWriter) Context
NewContext returns a Context instance.
type CustomResponse ¶
type CustomResponse struct { Code int `json:"code"` Reason string `json:"reason,omitempty"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` TraceId string `json:"trace_id,omitempty"` Metadata map[string]string `json:"metadata,omitempty"` Cause error `json:"-"` }
func (*CustomResponse) Unwrap ¶
func (r *CustomResponse) Unwrap() error
Unwrap satisfies the Go 1.13 error wrapper interface.
type DecodeErrorFunc ¶
DecodeErrorFunc is decode error func.
type DecodeRequestFunc ¶
DecodeRequestFunc is decode request func.
type DecodeResponseFunc ¶
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 ¶
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 ¶
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 HandlerFunc ¶
HandlerFunc defines a function to serve HTTP requests.
func WrapHandler ¶
func WrapHandler(h http.Handler) HandlerFunc
WrapHandler wraps `http.Handler` into `http.HandlerFunc`.
type HeaderCallOption ¶
type HeaderCallOption struct { EmptyCallOption // contains filtered or unexported fields }
HeaderCallOption is retrieve response header for client call
type MiddlewareFunc ¶
type MiddlewareFunc func(next HandlerFunc) HandlerFunc
MiddlewareFunc defines a function to process middleware.
func WrapMiddleware ¶
func WrapMiddleware(m func(http.Handler) http.Handler) MiddlewareFunc
WrapMiddleware wraps `func(http.Handler) http.Handler` into `http.MiddlewareFunc`
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 ¶
Redirector replies to the request with a redirect to url which may be a path relative to the request path.
func NewRedirect ¶
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 Response ¶
type Response struct { Writer http.ResponseWriter Status int Size int64 }
Response wraps an http.ResponseWriter and implements its interface to be used by an HTTP handler to construct an HTTP response. See: https://golang.org/pkg/net/http/#ResponseWriter
func NewResponse ¶
func NewResponse(w http.ResponseWriter) (r *Response)
NewResponse creates a new instance of Response.
func (*Response) Flush ¶
func (r *Response) Flush()
Flush implements the http.Flusher interface to allow an HTTP handler to flush buffered data to the client. See http.Flusher(https://golang.org/pkg/net/http/#Flusher)
func (*Response) Header ¶
Header returns the header map for the writer that will be sent by WriteHeader. Changing the header after a call to WriteHeader (or Write) has no effect unless the modified headers were declared as trailers by setting the "Trailer" header before the call to WriteHeader (see example) To suppress implicit response headers, set their value to nil. Example: https://golang.org/pkg/net/http/#example_ResponseWriter_trailers
func (*Response) Hijack ¶
Hijack implements the http.Hijacker interface to allow an HTTP handler to take over the connection. See http.Hijacker(https://golang.org/pkg/net/http/#Hijacker)
func (*Response) StatusCode ¶
func (*Response) WriteHeader ¶
WriteHeader sends an HTTP response header with status code. If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(http.StatusOK). Thus explicit calls to WriteHeader are mainly used to send error codes.
type ResponseController ¶
type ResponseController = http.ResponseController
type Router ¶
type Router interface { GET(path string, handler HandlerFunc, m ...MiddlewareFunc) POST(path string, handler HandlerFunc, m ...MiddlewareFunc) PUT(path string, handler HandlerFunc, m ...MiddlewareFunc) DELETE(path string, handler HandlerFunc, m ...MiddlewareFunc) HEAD(path string, handler HandlerFunc, m ...MiddlewareFunc) PATCH(path string, handler HandlerFunc, m ...MiddlewareFunc) CONNECT(path string, h HandlerFunc, m ...MiddlewareFunc) OPTIONS(path string, h HandlerFunc, m ...MiddlewareFunc) TRACE(path string, h HandlerFunc, m ...MiddlewareFunc) Group(prefix string, filters ...MiddlewareFunc) Router }
type Server ¶
Server is an HTTP server wrapper.
func NewServer ¶
func NewServer(opts ...ServerOption) *Server
NewServer creates an HTTP server by options.
func (*Server) Endpoint ¶
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) 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 ¶
func (s *Server) HandleHeader(key, val string, h http.HandlerFunc)
HandleHeader registers a new route with a matcher for the header.
func (*Server) HandlePrefix ¶
HandlePrefix registers a new route with a matcher for the URL path prefix.
func (*Server) NewHandler ¶
func (s *Server) NewHandler(handler Handler, middlewares ...MiddlewareFunc)
NewHandler registers an HTTP handler.
func (*Server) Route ¶
func (s *Server) Route(prefix string, middlewares ...MiddlewareFunc) 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) Use ¶
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 ¶
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 ¶
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 ErrorEncoder ¶
func ErrorEncoder(en EncodeErrorFunc) ServerOption
ErrorEncoder with error encoder.
func Logger ¶
func Logger(_ log.Logger) ServerOption
Logger with server logger. Deprecated: use global logger instead.
func Middleware ¶
func Middleware(m ...middleware.Middleware) ServerOption
Middleware with service middleware option.
func PathPrefix ¶
func PathPrefix(prefix string) ServerOption
PathPrefix with mux's PathPrefix, router will replaced by a subrouter that start with prefix.
func RequestDecoder ¶
func RequestDecoder(dec DecodeRequestFunc) ServerOption
RequestDecoder with request decoder.
func RequestQueryDecoder ¶
func RequestQueryDecoder(dec DecodeRequestFunc) ServerOption
RequestQueryDecoder with request decoder.
func RequestVarsDecoder ¶
func RequestVarsDecoder(dec DecodeRequestFunc) ServerOption
RequestVarsDecoder with request decoder.
func ResponseEncoder ¶
func ResponseEncoder(en EncodeResponseFunc) ServerOption
ResponseEncoder with response encoder.
func StrictSlash ¶
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.
type Transport ¶
type Transport struct {
// contains filtered or unexported fields
}
Transport is an HTTP transport.
func (*Transport) PathTemplate ¶
PathTemplate returns the http path template.
func (*Transport) ReplyHeader ¶
ReplyHeader returns the reply header.
func (*Transport) RequestHeader ¶
RequestHeader returns the request header.
type Transporter ¶
type Transporter interface { transport.Transporter Request() *http.Request PathTemplate() string }
Transporter is http Transporter
type WalkRouteFunc ¶
WalkRouteFunc is the type of the function called for each route visited by Walk.