Efficient URL routing using a Trie data structure.
Note: This package has been merged into Go-Json-Rest, where it has been improved and specialized for the REST API use case.
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.
This package is "go-gettable", just do:
go get github.com/ant0ine/go-urlrouter
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
- Web Server Demo how to use the router with
net/http
- Go-Json-Rest A quick and easy way to setup a RESTful JSON API
- Online Documentation (godoc.org)
- [(Blog Post) Better URL Routing ?] (https://www.ant0ine.com/post/better-url-routing-golang.html)
- [(Blog Post) Playing with Go1.1beta2, it's much faster!] (https://www.ant0ine.com/post/go1-1-beta2-much-faster.html)
Copyright (c) 2013-2014 Antoine Imbert