1.1 KiB
1.1 KiB
router
HTTP router based on radix trees.
Usage
Static
We can save any type of data inside the router. Here is an example storing strings for static routes:
router := router.New[string]()
router.Add("GET", "/hello", "Hello")
router.Add("GET", "/world", "World")
Parameters
The router supports parameters:
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:
router.Add("GET", "/images/*path", "...")
Benchmarks
Requesting every single route in 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.