2 Commits

Author SHA1 Message Date
3b94964068 Update README.md 2025-10-28 00:46:37 +01:00
1dba802590 Update README.md 2025-10-28 00:17:59 +01:00

View File

@@ -1,8 +1,8 @@
# Sux # Sux
Static route http router that considers the request method with support for parameters, middleware, and route groups. HTTP router that considers the request method with support for parameters, middleware, and route groups.
Useful for serving server-side rendered content. Useful for serving all kinds of content.
## Features ## Features
@@ -52,22 +52,22 @@ r := sux.New()
// Named parameters // Named parameters
r.GET("/users/:id", func(w http.ResponseWriter, r *http.Request) { r.GET("/users/:id", func(w http.ResponseWriter, r *http.Request) {
params := sux.ParamsFromContext(r) params := sux.ParamsFromContext(r)
id := params["id"] id := params.Get("id")
io.WriteString(w, "User ID: "+id) io.WriteString(w, "User ID: "+id)
}) })
// Wildcard parameters (captures rest of path) // Wildcard parameters (captures rest of path)
r.GET("/files/*path", func(w http.ResponseWriter, r *http.Request) { r.GET("/files/*path", func(w http.ResponseWriter, r *http.Request) {
params := sux.ParamsFromContext(r) params := sux.ParamsFromContext(r)
path := params["path"] path := params.Get("path")
io.WriteString(w, "File path: "+path) io.WriteString(w, "File path: "+path)
}) })
// Multiple parameters // Multiple parameters
r.GET("/users/:userId/posts/:postId", func(w http.ResponseWriter, r *http.Request) { r.GET("/users/:userId/posts/:postId", func(w http.ResponseWriter, r *http.Request) {
params := sux.ParamsFromContext(r) params := sux.ParamsFromContext(r)
userId := params["userId"] userId := params.Get("userId")
postId := params["postId"] postId := params.Get("postId")
io.WriteString(w, "User "+userId+", Post "+postId) io.WriteString(w, "User "+userId+", Post "+postId)
}) })
``` ```
@@ -187,32 +187,7 @@ BenchmarkLargeRouter-8 1548286 833.0 ns/op 704 B/op 9 alloc
### Performance Comparison ### Performance Comparison
Compared to other popular Go routers: see [COMPARISON.md](COMPARISON.md)
```
darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/
Running 30s test @ http://inuc:8080/
8 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 7.08ms 3.02ms 64.38ms 89.40%
Req/Sec 18.24k 2.11k 24.06k 73.88%
4260394 requests in 30.00s, 491.63MB read
Requests/sec: 142025.60
Transfer/sec: 16.39MB
```
Compared to https://github.com/julienschmidt/httprouter
```
darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/
Running 30s test @ http://inuc:8080/
8 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 7.14ms 3.13ms 74.06ms 89.99%
Req/Sec 18.18k 2.19k 23.31k 75.88%
4224358 requests in 30.00s, 487.47MB read
Requests/sec: 140826.15
Transfer/sec: 16.25MB
```
## API Reference ## API Reference