Slim

Router

type Router

type Router interface {    MiddlewareRegistrar    MiddlewareComposer    ErrorHandlerRegistrar    RouteRegistrar    RouteMatcher    // Add registers a request handler and returns the corresponding route interface instance    Add([]string, string, HandlerFunc) (Route, error)    // Remove removes a route    Remove(methods []string, path string) error    // Routes returns registered routes    Routes() []Route    // URI generates a URI from a handler.    URI(h HandlerFunc, params ...any) string    // Reverse generates a URL from a route name and provided parameters.    Reverse(name string, params ...any) string}

Router is an interface that routes requests to registered routes.

type RouteMatcher

type RouteMatcher interface {    // Match matches a route    Match(r *http.Request, p *PathParams) RouteMatch}

Route matcher interface.

type RouterConfig

type RouterConfig struct {    AllowOverwritingRoute    bool    UnescapePathParamValues  bool    UseEscapedPathForRouting bool    RoutingTrailingSlash     bool    RouteCollector           RouteCollector}

type func NewRouter

func NewRouter(config RouterConfig) Router

type RouteCollector

type RouteCollector interface {    MiddlewareRegistrar    MiddlewareComposer    ErrorHandlerRegistrar    RouteRegistrar    // Prefix returns the common route prefix    Prefix() string    // Parent returns the parent route collector    Parent() RouteCollector    // Router returns the router to which it belongs    Router() Router}

Route collector interface

func NewRouteCollector

func NewRouteCollector(prefix string, parent RouteCollector, router Router) RouteCollector

type RouteRegistrar

type RouteRegistrar interface {    // Group implements route grouping registration, actually calls `RouteCollector.Route` to implement    Group(fn func(sub RouteCollector))    // Route implements route grouping registration with a specified prefix    Route(prefix string, fn func(sub RouteCollector))    // Some registers a new route for multiple HTTP methods and path, matching handlers in the router. Panics if an error occurs.    Some(methods []string, pattern string, h HandlerFunc) Route    // Any registers a new route for all supported HTTP methods and path, matching handlers in the router. Panics if an error occurs.    Any(pattern string, h HandlerFunc) Route    // CONNECT registers a new CONNECT route for the path, matching handlers in the router. Panics if an error occurs.    CONNECT(pattern string, h HandlerFunc) Route    // DELETE registers a new DELETE route for the path, matching handlers in the router. Panics if an error occurs.    DELETE(pattern string, h HandlerFunc) Route    // GET registers a new GET route for the path, matching handlers in the router. Panics if an error occurs.    GET(pattern string, h HandlerFunc) Route    // HEAD registers a new HEAD route for the path, matching handlers in the router. Panics if an error occurs.    HEAD(pattern string, h HandlerFunc) Route    // OPTIONS registers a new OPTIONS route for the path, matching handlers in the router. Panics if an error occurs.    OPTIONS(pattern string, h HandlerFunc) Route    // PATCH registers a new PATCH route for the path, matching handlers in the router. Panics if an error occurs.    PATCH(pattern string, h HandlerFunc) Route    // POST registers a new POST route for the path, matching handlers in the router. Panics if an error occurs.    POST(pattern string, h HandlerFunc) Route    // PUT registers a new PUT route for the path, matching handlers in the router. Panics if an error occurs.    PUT(pattern string, h HandlerFunc) Route    // TRACE registers a new TRACE route for the path, matching handlers in the router. Panics if an error occurs.    TRACE(pattern string, h HandlerFunc) Route    // Handle registers a route that supports the specified request method    Handle(method, pattern string, h HandlerFunc) Route    // Static registers a new route with a path prefix to serve static files from the provided root directory. Panics if an error occurs.    Static(prefix, root string) Route    // File registers a new route with a path to serve a static file. Panics if an error occurs.    File(pattern, file string) Route}

Route registrar interface

type Route

type Route interface {    MiddlewareRegistrar    MiddlewareComposer    // Router returns the router to which it belongs    Router() Router    // Collector returns the collector to which it belongs    Collector() RouteCollector    // Name returns the route name    Name() string    // SetName sets the route name    SetName(name string) Route    // Title returns the route title    Title() string    // SetTitle sets the route title    SetTitle(name string) Route    // Pattern returns the route path expression    Pattern() string    // Methods returns the supported HTTP request methods    Methods() []string    // Handler returns the registered request handler function    Handler() HandlerFunc    // Params returns the list of supported route parameters    Params() []string    // RouteInfo returns the route description interface implementation    RouteInfo() RouteInfo}

Route interface.

type RouteInfo

type RouteInfo interface {    // Router returns the router to which it belongs    Router() Router    // Collector returns the collector to which it belongs    Collector() RouteCollector    // Name returns the route name    Name() string    // Title returns the route title    Title() string    // Methods returns the list of supported request methods    Methods() []string    // Pattern returns the route path expression    Pattern() string    // Params returns the list of supported route parameters    Params() []string    // Reverse reverses the route expression to an actual request path using provided parameters.    // If parameters are empty or nil, it tries to use default values. If parameters cannot be resolved,    // it will panic with an error    Reverse(params ...any) string    // String returns the string form    String() string}

Route description interface.

type RouteMatchType

type RouteMatchType uint8

Describes the possible states of a request from the routing perspective.

const (    // RouteMatchUnknown is the state before routing is completed. Default state for a fresh context.    RouteMatchUnknown RouteMatchType = iota    // RouteMatchNotFound is the state when the router found no matching route for the current request    RouteMatchNotFound    // RouteMatchMethodNotAllowed is the state when the router found no route with matching path + method.    // Although the router has a route matching the path, the method is different.    RouteMatchMethodNotAllowed    // RouteMatchFound is the state when the router found an exact match for the path + method combination    RouteMatchFound)

type RouteMatch

type RouteMatch struct {    // Type contains the enumerated result of Router.Match, helping to understand whether the router    // truly matched a route, or what kind of error case we have at the end of the handler chain (404/405).    Type RouteMatchType    // AllowMethods is the list of request methods that can be handled, mainly    // used when Type value is RouteMatchMethodNotAllowed.    AllowMethods []string    // Handler is the function (chain) matched by the router. If there's no match, it may result in ErrNotFound or ErrMethodNotAllowed.    Handler HandlerFunc    // RouteInfo is the information of the route we just matched    RouteInfo RouteInfo}

RouteMatch is the result object of Router.Match. Its main purpose is to avoid allocating memory for PathParams inside the router.

Navigate Select esc Close search