https://github.com/hslam/mux
Package mux implements an HTTP request multiplexer.
https://github.com/hslam/mux
go golang group http matching multiplexer mux routing
Last synced: 3 months ago
JSON representation
Package mux implements an HTTP request multiplexer.
- Host: GitHub
- URL: https://github.com/hslam/mux
- Owner: hslam
- License: mit
- Created: 2019-11-20T14:57:48.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-02-14T11:09:02.000Z (over 3 years ago)
- Last Synced: 2024-06-20T13:34:34.805Z (about 1 year ago)
- Topics: go, golang, group, http, matching, multiplexer, mux, routing
- Language: Go
- Homepage:
- Size: 72.3 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mux
[](https://pkg.go.dev/github.com/hslam/mux)
[](https://github.com/hslam/mux/actions)
[](https://codecov.io/gh/hslam/mux)
[](https://goreportcard.com/report/github.com/hslam/mux)
[](https://github.com/hslam/mux/blob/master/LICENSE)Package mux implements an HTTP request multiplexer.
## Features
* Middleware
* Group
* Path matching and routing
* Fully compatible with the http.HandlerFunc
* Not found
* Recovery
* [HTTP Handler](https://github.com/hslam/handler "handler")## Get started
### Install
```
go get github.com/hslam/mux
```
### Import
```
import "github.com/hslam/mux"
```
### Usage#### Simple Example
```go
package mainimport (
"github.com/hslam/mux"
"log"
"net/http"
)func main() {
m := mux.New()
m.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello World"))
})
log.Fatal(http.ListenAndServe(":8080", m))
}
```#### Example
```go
package mainimport (
"fmt"
"github.com/hslam/mux"
"log"
"net/http"
)func main() {
m := mux.New()
m.Recovery(mux.Recovery)
m.NotFound(func(w http.ResponseWriter, r *http.Request) {
http.Error(w, "Not Found : "+r.URL.String(), http.StatusNotFound)
})
m.Use(func(w http.ResponseWriter, r *http.Request) {
fmt.Printf("Host:%s Path:%s Method:%s\n", r.Host, r.URL.Path, r.Method)
})
m.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(fmt.Sprintf("hello world Method:%s\n", r.Method)))
}).All()
m.HandleFunc("/hello/:key/world/:value", func(w http.ResponseWriter, r *http.Request) {
params := m.Params(r)
w.Write([]byte(fmt.Sprintf("hello key:%s value:%s\n", params["key"], params["value"])))
}).GET().POST().PUT().DELETE()
m.Group("/group", func(m *mux.Mux) {
m.HandleFunc("/foo/:id", func(w http.ResponseWriter, r *http.Request) {
params := m.Params(r)
w.Write([]byte(fmt.Sprintf("group/foo id:%s\n", params["id"])))
}).GET()
m.HandleFunc("/bar/:id", func(w http.ResponseWriter, r *http.Request) {
params := m.Params(r)
w.Write([]byte(fmt.Sprintf("group/bar id:%s\n", params["id"])))
}).GET()
})
log.Fatal(http.ListenAndServe(":8080", m))
}
```curl -XGET http://localhost:8080/favicon.ico
```
Not Found : /favicon.ico
```curl -XGET http://localhost:8080/hello
```
hello world Method:GET
```curl -XPOST http://localhost:8080/hello
```
hello world Method:POST
```curl -I http://localhost:8080/hello
```
HTTP/1.1 200 OK
Date: Tue, 01 Oct 2019 20:28:42 GMT
Content-Length: 24
Content-Type: text/plain; charset=utf-8
```curl -XPATCH http://localhost:8080/hello
```
hello world Method:PATCH
```curl -XOPTIONS http://localhost:8080/hello
```
hello world Method:OPTIONS
```curl http://localhost:8080/hello/123/world/456
```
hello key:123 value:456
```
curl http://localhost:8080/group/foo/1
```
group/foo id:1
```
curl http://localhost:8080/group/bar/2
```
group/bar id:2
```### License
This package is licensed under a MIT license (Copyright (c) 2019 Meng Huang)### Author
mux was written by Meng Huang.