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.
