• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 12 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Efficient URL routing using a Trie data structure.

Go-UrlRouter

Efficient URL routing using a Trie data structure.

Build Status

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.

Install

This package is "go-gettable", just do:

go get github.com/ant0ine/go-urlrouter

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

More Examples

  • 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

Documentation

Copyright (c) 2013-2014 Antoine Imbert

MIT License

Analytics