Documentation
¶
Overview ¶
Efficient URL routing using a Trie data structure.
This Package implements a URL Router, but instead of using the usual "evaluate all the routes and return the first regexp that matches" strategy, it uses a Trie data structure to perform the routing. This is more efficient, and scales better for a large number of routes. It supports the :param and *splat placeholders in the route strings.
Example:
router := urlrouter.Router{ Routes: []urlrouter.Route{ urlrouter.Route{ PathExp: "/resources/:id", Dest: "one_resource", }, urlrouter.Route{ PathExp: "/resources", Dest: "all_resources", }, }, } err := router.Start() if err != nil { panic(err) } input := "http://example.org/resources/123" route, params, err := router.FindRoute(input) if err != nil { panic(err) } fmt.Print(route.Dest) // one_resource fmt.Print(params["id"]) // 123
(Blog Post: https://www.ant0ine.com/post/better-url-routing-golang.html)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Route ¶
type Route struct { // A string defining the route, like "/resource/:id.json". // Placeholders supported are: // :param that matches any char to the first '/' or '.' // *splat that matches everything to the end of the string PathExp string // Can be anything useful to point to the code to run for this route. Dest interface{} }
type Router ¶
type Router struct { // list of Routes, the order matters, if multiple Routes match, the first defined will be used. Routes []Route // contains filtered or unexported fields }
func (*Router) FindRoute ¶
Parse the url string (complete or just the path) and return the first matching Route and the corresponding parameters.
func (*Router) FindRouteFromURL ¶
Return the first matching Route and the corresponding parameters for a given URL object.