Documentation ¶
Overview ¶
Package vestigo implements a performant, stand-alone, HTTP compliant URL Router for go web applications. Vestigo utilizes a simple radix trie for url route indexing and search, and puts any URL parameters found in a request in the request's Form, much like PAT. Vestigo boasts standards compliance regarding the proper behavior when methods are not allowed on a given resource as well as when a resource isn't found. vestigo also includes built in CORS support on a global and per resource capability.
Index ¶
- Variables
- func AddParam(r *http.Request, name, value string)
- func CustomMethodNotAllowedHandlerFunc(f MethodNotAllowedHandlerFunc)
- func CustomNotFoundHandlerFunc(f http.HandlerFunc)
- func Param(r *http.Request, name string) string
- func ParamNames(r *http.Request) []string
- func TrimmedParamNames(r *http.Request) []string
- type CorsAccessControl
- func (c *CorsAccessControl) GetAllowCredentials() bool
- func (c *CorsAccessControl) GetAllowHeaders() []string
- func (c *CorsAccessControl) GetAllowMethods() []string
- func (c *CorsAccessControl) GetAllowOrigin() []string
- func (c *CorsAccessControl) GetExposeHeaders() []string
- func (c *CorsAccessControl) GetMaxAge() time.Duration
- func (c *CorsAccessControl) Merge(c2 *CorsAccessControl) *CorsAccessControl
- type MethodNotAllowedHandlerFunc
- type Middleware
- type Router
- func (r *Router) Add(method, path string, h http.HandlerFunc, middleware ...Middleware)
- func (r *Router) Connect(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) Delete(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) Find(req *http.Request) (h http.HandlerFunc)
- func (r *Router) Get(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) GetMatchedPathTemplate(req *http.Request) string
- func (r *Router) Handle(path string, handler http.Handler, middleware ...Middleware)
- func (r *Router) HandleFunc(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) Patch(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) Post(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) Put(path string, handler http.HandlerFunc, middleware ...Middleware)
- func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (r *Router) SetCors(path string, c *CorsAccessControl)
- func (r *Router) SetGlobalCors(c *CorsAccessControl)
- func (r *Router) Trace(path string, handler http.HandlerFunc, middleware ...Middleware)
Constants ¶
This section is empty.
Variables ¶
var AllowTrace = false
AllowTrace - Globally allow the TRACE method handling within vestigo url router. This generally not a good idea to have true in production settings, but excellent for testing.
Functions ¶
func AddParam ¶ added in v1.0.2
AddParam - Add a vestigo-style parameter to the request -- useful for middleware Appends :name=value onto a blank request query string or appends &:name=value onto a non-blank request query string
func CustomMethodNotAllowedHandlerFunc ¶ added in v1.0.2
func CustomMethodNotAllowedHandlerFunc(f MethodNotAllowedHandlerFunc)
CustomMethodNotAllowedHandlerFunc - This function will allow the caller to set vestigo's methodNotAllowedHandler. This function needs to return an http.Handlerfunc and take in a formatted string of methods that ARE allowed. Follow the convention for methodNotAllowedHandler. Note that if you overwrite you will be responsible for making sure the allowed methods are put into headers
func CustomNotFoundHandlerFunc ¶ added in v1.0.2
func CustomNotFoundHandlerFunc(f http.HandlerFunc)
CustomNotFoundHandlerFunc - Specify a Handlerfunc to use for a custom NotFound Handler. Can only be performed once.
func ParamNames ¶
ParamNames - Get a url parameter name list with the leading :
func TrimmedParamNames ¶ added in v1.0.2
TrimmedParamNames - Get a url parameter name list without the leading :
Types ¶
type CorsAccessControl ¶
type CorsAccessControl struct { AllowOrigin []string AllowCredentials bool ExposeHeaders []string MaxAge time.Duration AllowMethods []string AllowHeaders []string }
CorsAccessControl - Default implementation of Cors
func (*CorsAccessControl) GetAllowCredentials ¶
func (c *CorsAccessControl) GetAllowCredentials() bool
GetAllowCredentials - returns the allow-credentials string representation
func (*CorsAccessControl) GetAllowHeaders ¶
func (c *CorsAccessControl) GetAllowHeaders() []string
GetAllowHeaders - returns the allow-headers string representation
func (*CorsAccessControl) GetAllowMethods ¶
func (c *CorsAccessControl) GetAllowMethods() []string
GetAllowMethods - returns the allow-methods string representation
func (*CorsAccessControl) GetAllowOrigin ¶
func (c *CorsAccessControl) GetAllowOrigin() []string
GetAllowOrigin - returns the allow-origin string representation
func (*CorsAccessControl) GetExposeHeaders ¶
func (c *CorsAccessControl) GetExposeHeaders() []string
GetExposeHeaders - returns the expose-headers string representation
func (*CorsAccessControl) GetMaxAge ¶
func (c *CorsAccessControl) GetMaxAge() time.Duration
GetMaxAge - returns the max-age string representation
func (*CorsAccessControl) Merge ¶
func (c *CorsAccessControl) Merge(c2 *CorsAccessControl) *CorsAccessControl
Merge - Merge the values of one CORS policy into 'this' one
type MethodNotAllowedHandlerFunc ¶ added in v1.0.2
type MethodNotAllowedHandlerFunc func(string) func(w http.ResponseWriter, r *http.Request)
type Middleware ¶ added in v1.1.0
type Middleware func(http.HandlerFunc) http.HandlerFunc
middleware takes in HandlerFunc (which can be another middleware or handler) and wraps it within another one
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router - The main vestigo router data structure
func (*Router) Add ¶
func (r *Router) Add(method, path string, h http.HandlerFunc, middleware ...Middleware)
Add - Add a method/handler combination to the router
func (*Router) Connect ¶
func (r *Router) Connect(path string, handler http.HandlerFunc, middleware ...Middleware)
Connect - Helper method to add HTTP CONNECT Method to router
func (*Router) Delete ¶
func (r *Router) Delete(path string, handler http.HandlerFunc, middleware ...Middleware)
Delete - Helper method to add HTTP DELETE Method to router
func (*Router) Find ¶
func (r *Router) Find(req *http.Request) (h http.HandlerFunc)
Find - Find A route within the router tree
func (*Router) Get ¶
func (r *Router) Get(path string, handler http.HandlerFunc, middleware ...Middleware)
Get - Helper method to add HTTP GET Method to router
func (*Router) GetMatchedPathTemplate ¶ added in v1.0.2
GetMatchedPathTemplate - get the path template from the url in the request
func (*Router) Handle ¶ added in v1.0.2
func (r *Router) Handle(path string, handler http.Handler, middleware ...Middleware)
Handle - Helper method to add all HTTP Methods to router
func (*Router) HandleFunc ¶ added in v1.0.2
func (r *Router) HandleFunc(path string, handler http.HandlerFunc, middleware ...Middleware)
HandleFunc - Helper method to add all HTTP Methods to router
func (*Router) Patch ¶
func (r *Router) Patch(path string, handler http.HandlerFunc, middleware ...Middleware)
Patch - Helper method to add HTTP PATCH Method to router
func (*Router) Post ¶
func (r *Router) Post(path string, handler http.HandlerFunc, middleware ...Middleware)
Post - Helper method to add HTTP POST Method to router
func (*Router) Put ¶
func (r *Router) Put(path string, handler http.HandlerFunc, middleware ...Middleware)
Put - Helper method to add HTTP PUT Method to router
func (*Router) ServeHTTP ¶
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)
ServeHTTP - implementation of a http.Handler, making Router a http.Handler
func (*Router) SetCors ¶
func (r *Router) SetCors(path string, c *CorsAccessControl)
SetCors - Set per resource Cors Policy. The CorsAccessControl policy passed in will map to the policy that is validated against the "path" resource. This policy will be merged with the global policy, and values will be deduplicated if there are overlaps.
func (*Router) SetGlobalCors ¶
func (r *Router) SetGlobalCors(c *CorsAccessControl)
SetGlobalCors - Settings for Global Cors Options. This takes a *CorsAccessControl policy, and will apply said policy to every resource. If this is not set on the router, CORS functionality is turned off.
func (*Router) Trace ¶
func (r *Router) Trace(path string, handler http.HandlerFunc, middleware ...Middleware)
Trace - Helper method to add HTTP TRACE Method to router