Documentation ¶
Index ¶
- Variables
- func RegisterMethod(method string)
- func URLParam(r *http.Request, key string) string
- func URLParamFromCtx(ctx context.Context, key string) string
- func Walk(r Routes, walkFn WalkFunc) error
- type ChainHandler
- type Context
- type Middlewares
- type Mux
- func (mx *Mux) Connect(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Delete(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Get(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Group(fn func(r Router)) Router
- func (mx *Mux) Handle(pattern string, handler http.Handler)
- func (mx *Mux) HandleFunc(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Head(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Match(rctx *Context, method, path string) bool
- func (mx *Mux) Method(method, pattern string, handler http.Handler)
- func (mx *Mux) MethodFunc(method, pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) MethodNotAllowed(handlerFn http.HandlerFunc)
- func (mx *Mux) MethodNotAllowedHandler() http.HandlerFunc
- func (mx *Mux) Middlewares() Middlewares
- func (mx *Mux) Mount(pattern string, handler http.Handler)
- func (mx *Mux) NotFound(handlerFn http.HandlerFunc)
- func (mx *Mux) NotFoundHandler() http.HandlerFunc
- func (mx *Mux) Options(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Patch(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Post(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Put(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Route(pattern string, fn func(r Router)) Router
- func (mx *Mux) Routes() []Route
- func (mx *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (mx *Mux) Trace(pattern string, handlerFn http.HandlerFunc)
- func (mx *Mux) Use(middlewares ...func(http.Handler) http.Handler)
- func (mx *Mux) With(middlewares ...func(http.Handler) http.Handler) Router
- type Route
- type RouteParams
- type Router
- type Routes
- type WalkFunc
Constants ¶
This section is empty.
Variables ¶
var RouteCtxKey = &contextKey{"RouteContext"}
RouteCtxKey is the context.Context key to store the request context.
Functions ¶
func RegisterMethod ¶
func RegisterMethod(method string)
RegisterMethod adds support for custom HTTP method handlers
func URLParamFromCtx ¶
URLParamFromCtx returns the url parameter from a http.Request Context.
Types ¶
type ChainHandler ¶
type ChainHandler struct { Endpoint http.Handler Middlewares Middlewares // contains filtered or unexported fields }
ChainHandler is a http.Handler with support for handler composition and execution.
func (*ChainHandler) ServeHTTP ¶
func (c *ChainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type Context ¶
type Context struct { Routes Routes // Routing path/method override used during route lookup. RoutePath string RouteMethod string // URLParams are the stack of routeParams captured during the routing lifecycle in the sub-routers stack. URLParams RouteParams // Routing pattern stack throughout the request lifecycle on all connected routers. // This is a record of all matching patterns in the sub-routers stack. RoutePatterns []string // contains filtered or unexported fields }
Context is the default routing context set on the root node of the request context to track route patterns, URL parameters and optional routing path.
func NewRouteContext ¶
func NewRouteContext() *Context
NewRouteContext returns a new routing Context object.
func RouteContext ¶
RouteContext returns gor routing Context object from a http.Request Context.
func (*Context) RoutePattern ¶
RoutePattern builds a routing pattern string for a particular request at a particular routing point. This means that the value will change throughout the request execution time in the router. Therefore, it is recommended to use this value only after the next handler is called.
type Middlewares ¶
Middlewares is a slice of standard middleware handlers with methods to compose middleware chains and http.Handler's.
func Chain ¶
func Chain(middlewares ...func(http.Handler) http.Handler) Middlewares
Chain returns a Middlewares type from a slice of middleware handlers.
func (Middlewares) Handler ¶
func (mws Middlewares) Handler(h http.Handler) http.Handler
Handler builds and returns a http.Handler from the chain of middlewares, with `h http.Handler` as the final handler.
func (Middlewares) HandlerFunc ¶
func (mws Middlewares) HandlerFunc(h http.HandlerFunc) http.Handler
HandlerFunc builds and returns a http.Handler from the chain of middlewares, with `h http.Handler` as the final handler.
type Mux ¶
type Mux struct {
// contains filtered or unexported fields
}
Mux is a simple HTTP route multiplexer that parses the request path, writes any URL parameters and executes the end handler. It implements the http.Handler interface and is friendly with the standard library.
func NewMux ¶
func NewMux() *Mux
NewMux returns a newly initialized Mux object that implements the Router interface.
func NewRouter ¶
func NewRouter() *Mux
NewRouter returns a new Mux object that implements the Router interface.
func (*Mux) Connect ¶
func (mx *Mux) Connect(pattern string, handlerFn http.HandlerFunc)
Connect adds a route `pattern` that matches a CONNECT http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Delete ¶
func (mx *Mux) Delete(pattern string, handlerFn http.HandlerFunc)
Delete adds a route `pattern` that matches a DELETE http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Get ¶
func (mx *Mux) Get(pattern string, handlerFn http.HandlerFunc)
Get adds a route `pattern` that matches a GET http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Group ¶
Group creates a new inline-Mux with a fresh middleware stack. This is useful for a group of handlers on the same routing path that use an additional set of middleware.
func (*Mux) Handle ¶
Handle adds a `pattern` route matching any http method to execute `handler` http.Handler.
func (*Mux) HandleFunc ¶
func (mx *Mux) HandleFunc(pattern string, handlerFn http.HandlerFunc)
HandleFunc adds a `pattern` route that matches any http method to. execute `handlerFn` http.HandlerFunc.
func (*Mux) Head ¶
func (mx *Mux) Head(pattern string, handlerFn http.HandlerFunc)
Head adds a route `pattern` that matches a HEAD http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Match ¶
Match searches the routing tree for the handler matching the method/path. This is similar to routing an http request, but without executing the handler afterwards. The *Context state is updated at runtime, so manage the state carefully or make a NewRouteContext().
func (*Mux) Method ¶
Method adds a route `pattern` that matches `method` http method to execute the `handler` http.Handler.
func (*Mux) MethodFunc ¶
func (mx *Mux) MethodFunc(method, pattern string, handlerFn http.HandlerFunc)
MethodFunc adds a route `pattern` that matches `method` http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) MethodNotAllowed ¶
func (mx *Mux) MethodNotAllowed(handlerFn http.HandlerFunc)
MethodNotAllowed sets a custom http.HandlerFunc to route paths where the method is unresolved. The default handler returns a 405 with an empty body.
func (*Mux) MethodNotAllowedHandler ¶
func (mx *Mux) MethodNotAllowedHandler() http.HandlerFunc
MethodNotAllowedHandler returns the default Mux 405 responder whenever a method cannot be resolved for a route.
func (*Mux) Middlewares ¶
func (mx *Mux) Middlewares() Middlewares
Middlewares returns a slice of middleware handler functions.
func (*Mux) Mount ¶
Mount attaches another http.Handler or gor Router as a subrouter on the routing path. It is very useful to split a large API into many independent routers and merge them into a single service using Mount. Note that Mount() simply sets a wildcard in the `template` that will continue routing in the `handler`, which in most cases is another gor.Router. As a result, if you define two Mount() routes on the same pattern, mount will cause a panic.
func (*Mux) NotFound ¶
func (mx *Mux) NotFound(handlerFn http.HandlerFunc)
NotFound sets a custom http.HandlerFunc to route paths that cannot be found. The default 404 handler is `http.NotFound`.
func (*Mux) NotFoundHandler ¶
func (mx *Mux) NotFoundHandler() http.HandlerFunc
NotFoundHandler returns the default Mux 404 responder whenever a route cannot be found.
func (*Mux) Options ¶
func (mx *Mux) Options(pattern string, handlerFn http.HandlerFunc)
Options adds a route `pattern` that matches a OPTIONS http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Patch ¶
func (mx *Mux) Patch(pattern string, handlerFn http.HandlerFunc)
Patch adds a route `pattern` that matches a PATCH http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Post ¶
func (mx *Mux) Post(pattern string, handlerFn http.HandlerFunc)
Post adds a route `pattern` that matches a POST http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Put ¶
func (mx *Mux) Put(pattern string, handlerFn http.HandlerFunc)
Put adds a route `pattern` that matches a PUT http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Route ¶
Route creates a new Mux with a fresh middleware stack and mounts it along the `pattern` as a subrouter. This is essentially a shortened Mount call.
func (*Mux) Routes ¶
Routes returns a slice of routing information from the tree, useful for traversing available routes of a router.
func (*Mux) ServeHTTP ¶
func (mx *Mux) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP is the only method of the http.Handler interface that makes Mux compatible with the standard library. It uses sync.Pool to get and reuse routing contexts for each request.
func (*Mux) Trace ¶
func (mx *Mux) Trace(pattern string, handlerFn http.HandlerFunc)
Trace adds a route `pattern` that matches a TRACE http method to execute the `handlerFn` http.HandlerFunc.
func (*Mux) Use ¶
Use appends a middleware handler to the Mux middleware stack. The middleware stack for any Mux will execute before finding a matching route to a specific handler, which provides opportunity to respond early, change the course of the request execution, or set request-scoped values for the next http.Handler.
type Route ¶
type Route struct { SubRoutes Routes Handlers map[string]http.Handler // HTTP method Pattern string }
Route describes the details of a routing handler.
type RouteParams ¶
RouteParams is a structure to track URL routing parameters efficiently.
func (*RouteParams) Add ¶
func (s *RouteParams) Add(key, value string)
Add will append a URL parameter to the end of the route param
type Router ¶
type Router interface { http.Handler Routes // Use appends one or more middlewares to the Router stack. Use(middlewares ...func(http.Handler) http.Handler) // With built-in middleware modules to the endpoint handler. With(middlewares ...func(http.Handler) http.Handler) Router // Group adds a new inline Router along the current routing path, // with a fresh middleware stack for the inline Router. Group(fn func(r Router)) Router // Route mounts a sub Router on the `pattern` string. Route(pattern string, fn func(r Router)) Router // Mount attaches another http.Handler along the ./pattern/* Mount(pattern string, h http.Handler) // Handle adds routes for a `pattern` that matches all HTTP methods. Handle(pattern string, h http.Handler) // HandleFunc adds routes for a `pattern` that matches all HTTP methods. HandleFunc(pattern string, h http.HandlerFunc) // Method adds routes for `pattern` which matches the HTTP method `method`. Method(method, pattern string, h http.Handler) // MethodFunc adds routes for `pattern` which matches the HTTP method `method`. MethodFunc(method, pattern string, h http.HandlerFunc) // HTTP-method routing along `pattern` Get(pattern string, h http.HandlerFunc) Put(pattern string, h http.HandlerFunc) Post(pattern string, h http.HandlerFunc) Head(pattern string, h http.HandlerFunc) Patch(pattern string, h http.HandlerFunc) Trace(pattern string, h http.HandlerFunc) Delete(pattern string, h http.HandlerFunc) Connect(pattern string, h http.HandlerFunc) Options(pattern string, h http.HandlerFunc) // NotFound defines a handler that will respond whenever a route cannot be found. NotFound(h http.HandlerFunc) // MethodNotAllowed defines a handler that will react whenever the method is not allowed. MethodNotAllowed(h http.HandlerFunc) }
Router consisting of basic routing methods, using only the standard net/http.
type Routes ¶
type Routes interface { // Routes returns the routing tree in an easily traversable structure. Routes() []Route // Middlewares returns the list of middlewares in use by the router. Middlewares() Middlewares // Match searches the routing tree for a handler that matches the method/path - // similar to routing an http request, but without the handler being executed afterwards. Match(rctx *Context, method, path string) bool }
Routes adds two methods for router traversal, which are also used by the `docgen` subpackage to generation documentation for Routers.