# router HTTP router based on radix trees. ## Features - Efficient lookup - Generic data structure - Zero dependencies (excluding tests) ## Installation ```shell go get git.akyoto.dev/go/router ``` ## Usage ```go router := router.New[string]() // Static routes router.Add("GET", "/hello", "...") router.Add("GET", "/world", "...") // Parameter routes router.Add("GET", "/users/:id", "...") router.Add("GET", "/users/:id/comments", "...") // Wildcard routes router.Add("GET", "/images/*path", "...") // Simple lookup data, params := router.Lookup("GET", "/users/42") fmt.Println(data, params) // Efficient lookup data := router.LookupNoAlloc("GET", "/users/42", func(key string, value string) { fmt.Println(key, value) }) ``` ## Tests ``` PASS: TestStatic PASS: TestParameter PASS: TestWildcard PASS: TestMethods PASS: TestGitHub coverage: 76.9% of statements ``` ## Benchmarks ``` BenchmarkLookup-12 6965749 171.2 ns/op 96 B/op 2 allocs/op BenchmarkLookupNoAlloc-12 24243546 48.5 ns/op 0 B/op 0 allocs/op ``` ## License Please see the [license documentation](https://akyoto.dev/license). ## Copyright © 2023 Eduard Urbach