summaryrefslogtreecommitdiff
path: root/vendor/github.com/go-zoo/bone/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-zoo/bone/README.md')
-rw-r--r--vendor/github.com/go-zoo/bone/README.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/vendor/github.com/go-zoo/bone/README.md b/vendor/github.com/go-zoo/bone/README.md
new file mode 100644
index 000000000..29ea5f6de
--- /dev/null
+++ b/vendor/github.com/go-zoo/bone/README.md
@@ -0,0 +1,81 @@
+bone [![GoDoc](https://godoc.org/github.com/squiidz/bone?status.png)](http://godoc.org/github.com/go-zoo/bone) [![Build Status](https://travis-ci.org/go-zoo/bone.svg)](https://travis-ci.org/go-zoo/bone) [![Go Report Card](https://goreportcard.com/badge/go-zoo/bone)](https://goreportcard.com/report/go-zoo/bone) [![Sourcegraph](https://sourcegraph.com/github.com/go-zoo/bone/-/badge.svg)](https://sourcegraph.com/github.com/go-zoo/bone?badge)
+=======
+
+## What is bone ?
+
+Bone is a lightweight and lightning fast HTTP Multiplexer for Golang. It support :
+
+- URL Parameters
+- REGEX Parameters
+- Wildcard routes
+- Router Prefix
+- Sub Router, `mux.SubRoute()`, support most standard router (bone, gorilla/mux, httpRouter etc...)
+- Http method declaration
+- Support for `http.Handler` and `http.HandlerFunc`
+- Custom NotFound handler
+- Respect the Go standard `http.Handler` interface
+
+![alt tag](https://c2.staticflickr.com/2/1070/540747396_5542b42cca_z.jpg)
+
+## Speed
+
+```
+- BenchmarkBoneMux 10000000 118 ns/op
+- BenchmarkZeusMux 100000 144 ns/op
+- BenchmarkHttpRouterMux 10000000 134 ns/op
+- BenchmarkNetHttpMux 3000000 580 ns/op
+- BenchmarkGorillaMux 300000 3333 ns/op
+- BenchmarkGorillaPatMux 1000000 1889 ns/op
+```
+
+ These test are just for fun, all these router are great and really efficient.
+ Bone do not pretend to be the fastest router for every job.
+
+## Example
+
+``` go
+
+package main
+
+import(
+ "net/http"
+
+ "github.com/go-zoo/bone"
+)
+
+func main () {
+ mux := bone.New()
+
+ // mux.Get, Post, etc ... takes http.Handler
+ mux.Get("/home/:id", http.HandlerFunc(HomeHandler))
+ mux.Get("/profil/:id/:var", http.HandlerFunc(ProfilHandler))
+ mux.Post("/data", http.HandlerFunc(DataHandler))
+
+ // Support REGEX Route params
+ mux.Get("/index/#id^[0-9]$", http.HandlerFunc(IndexHandler))
+
+ // Handle take http.Handler
+ mux.Handle("/", http.HandlerFunc(RootHandler))
+
+ // GetFunc, PostFunc etc ... takes http.HandlerFunc
+ mux.GetFunc("/test", Handler)
+
+ http.ListenAndServe(":8080", mux)
+}
+
+func Handler(rw http.ResponseWriter, req *http.Request) {
+ // Get the value of the "id" parameters.
+ val := bone.GetValue(req, "id")
+
+ rw.Write([]byte(val))
+}
+
+```
+
+## Blog Posts
+- http://www.peterbe.com/plog/my-favorite-go-multiplexer
+- https://harshladha.xyz/my-first-library-in-go-language-hasty-791b8e2b9e69
+
+## Libs
+- Errors dump for Go : [Trash](https://github.com/go-zoo/trash)
+- Middleware Chaining module : [Claw](https://github.com/go-zoo/claw)