GitHub - go-zoo/bone: Lightning Fast HTTP Multiplexer (original) (raw)

Bone is a lightweight and lightning fast HTTP Multiplexer for Golang. It support :

These tests are just for fun, all these routers are great and efficient. Bone isn't the fastest router for every job.

package main

import( "net/http"

"github.com/go-zoo/bone" )

func main () { mux := bone.New()

mux.RegisterValidatorFunc("isNum", func(s string) bool { if _, err := strconv.Atoi(s); err == nil { return true } return false })

// mux.Get, Post, etc ... takes http.Handler // validator for route parameter mux.Get("/home/:id|isNum", http.HandlerFunc(HomeHandler)) // multiple parameter 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)) }