A minimalist HTTP request routing helper for Go.
The name "R2" stands for "Request Routing". That's all, R2 is just a capable little helper for HTTP request routing, not another fancy web framework that wraps net/http.
R2 is built for people who:
- Think net/http is powerful enough and easy to use.
- Don't want to use any web framework that wraps net/http.
- Don't want to use any variant of
http.Handler
. - Want
http.ServeMux
to have better performance and support path parameters.
- Extremely easy to use
- Blazing fast (see benchmarks)
- Based on radix tree
- Sub-router support
- Path parameter support
- No
http.Handler
variant - Middleware support
- Zero third-party dependencies
- 100% code coverage
Open your terminal and execute
$ go get github.com/aofei/r2
done.
The only requirement is the Go, at least v1.13.
Create a file named hello.go
package main
import (
"fmt"
"net/http"
"github.com/aofei/r2"
)
func main() {
r := &r2.Router{}
r.Handle("", "/hello/:name", http.HandlerFunc(hello))
http.ListenAndServe("localhost:8080", r)
}
func hello(rw http.ResponseWriter, req *http.Request) {
fmt.Fprintf(rw, "Hello, %s\n", r2.PathParam(req, "name"))
}
and run it
$ go run hello.go
then visit http://localhost:8080/hello/世界
.
If you want to discuss R2, or ask questions about it, simply post questions or ideas here.
If you want to help build R2, simply follow this to send pull requests here.
This project is licensed under the MIT License.
License can be found here.