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 Param(r *http.Request, name string) string
- func ParamNames(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 Router
- func (r *Router) Add(method, path string, h http.HandlerFunc)
- func (r *Router) Connect(path string, handler http.HandlerFunc)
- func (r *Router) Delete(path string, handler http.HandlerFunc)
- func (r *Router) Find(req *http.Request) (h http.HandlerFunc)
- func (r *Router) Get(path string, handler http.HandlerFunc)
- func (r *Router) Patch(path string, handler http.HandlerFunc)
- func (r *Router) Post(path string, handler http.HandlerFunc)
- func (r *Router) Put(path string, handler http.HandlerFunc)
- 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)
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 ParamNames ¶
ParamNames - Get a url parameter name list
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 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)
Add - Add a method/handler combination to the router
func (*Router) Connect ¶
func (r *Router) Connect(path string, handler http.HandlerFunc)
Connect - Helper method to add HTTP CONNECT Method to router
func (*Router) Delete ¶
func (r *Router) Delete(path string, handler http.HandlerFunc)
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)
Get - Helper method to add HTTP GET Method to router
func (*Router) Patch ¶
func (r *Router) Patch(path string, handler http.HandlerFunc)
Patch - Helper method to add HTTP PATCH Method to router
func (*Router) Post ¶
func (r *Router) Post(path string, handler http.HandlerFunc)
Post - Helper method to add HTTP POST Method to router
func (*Router) Put ¶
func (r *Router) Put(path string, handler http.HandlerFunc)
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.