# router HTTP router based on radix trees. ## Installation ```shell go get git.akyoto.dev/go/router ``` ## Usage ### Static We can save any type of data inside the router. Here is an example storing strings for static routes: ```go router := router.New[string]() router.Add("GET", "/hello", "Hello") router.Add("GET", "/world", "World") ``` ### Parameters The router supports parameters: ```go router.Add("GET", "/users/:id", "...") router.Add("GET", "/users/:id/comments", "...") ``` ### Wildcards The router can also fall back to a catch-all route which is useful for file servers: ```go router.Add("GET", "/images/*path", "...") ``` ## Benchmarks Requesting every single route in [github.txt](testdata/github.txt) (≈200 requests) in each iteration: ``` BenchmarkLookup-12 33210 36134 ns/op 19488 B/op 337 allocs/op BenchmarkLookupNoAlloc-12 103437 11331 ns/op 0 B/op 0 allocs/op ``` ## Embedding If you'd like to embed this router into your own framework, please use `LookupNoAlloc` because it's much faster than `Lookup`. To build an http server you would of course store request handlers (functions), not strings.