const ( // ParamCharacter is a special character for path parameter. ParamCharacter = ':' // WildcardCharacter is a special character for wildcard path parameter. WildcardCharacter = '*' // TerminationCharacter is a special character for end of path. TerminationCharacter = '#' // SeparatorCharacter separates path segments. SeparatorCharacter = '/' // PathParamCharacter indicates a RESTCONF path param PathParamCharacter = '=' // MaxSize is max size of records and internal slice. MaxSize = (1 << 22) - 1 )
NotFound replies to the request with an HTTP 404 not found error. NotFound is called when unknown HTTP method or a handler not found. If you want to use the your own NotFound handler, please overwrite this variable.
var NotFound = func(w http.ResponseWriter, r *http.Request, _ Params) { http.NotFound(w, r) }
func NextSeparator(path string, start int) int
NextSeparator returns an index of next separator in path.
Handler represents a handler of HTTP request.
type Handler struct { // Method is an HTTP method. Method string // Path is a routing path for handler. Path string // Func is a function of handler of HTTP request. Func HandlerFunc }
The HandlerFunc type is aliased to type of handler function.
type HandlerFunc func(w http.ResponseWriter, r *http.Request, params Params)
Mux represents a multiplexer for HTTP request.
type Mux struct{}
func NewMux() *Mux
NewMux returns a new Mux.
func (m *Mux) Build(handlers []Handler) (http.Handler, error)
Build builds a http.Handler.
func (m *Mux) GET(path string, handler HandlerFunc) Handler
GET is shorthand of Mux.Handler("GET", path, handler).
func (m *Mux) HEAD(path string, handler HandlerFunc) Handler
HEAD is shorthand of Mux.Handler("HEAD", path, handler).
func (m *Mux) Handler(method, path string, handler HandlerFunc) Handler
Handler returns a handler for HTTP method.
func (m *Mux) POST(path string, handler HandlerFunc) Handler
POST is shorthand of Mux.Handler("POST", path, handler).
func (m *Mux) PUT(path string, handler HandlerFunc) Handler
PUT is shorthand of Mux.Handler("PUT", path, handler).
Param represents name and value of path parameter.
type Param struct { Name string Value string }
Params represents the name and value of path parameters.
type Params []Param
func (ps Params) Get(name string) string
Get gets the first value associated with the given name. If there are no values associated with the key, Get returns "".
Record represents a record data for router construction.
type Record struct { // Key for router construction. Key string // Result value for Key. Value interface{} }
func NewRecord(key string, value interface{}) Record
NewRecord returns a new Record.
Router represents a URL router.
type Router struct { // SizeHint expects the maximum number of path parameters in records to Build. // SizeHint will be used to determine the capacity of the memory to allocate. // By default, SizeHint will be determined from given records to Build. SizeHint int // contains filtered or unexported fields }
func New() *Router
New returns a new Router.
func (rt *Router) Build(records []Record) error
Build builds URL router from records.
func (rt *Router) Lookup(path string) (data interface{}, params Params, found bool)
Lookup returns data and path parameters that associated with path. params is a slice of the Param that arranged in the order in which parameters appeared. e.g. when built routing path is "/path/to/:id/:name" and given path is "/path/to/1/alice". params order is [{"id": "1"}, {"name": "alice"}], not [{"name": "alice"}, {"id": "1"}].