https://github.com/bastianrob/httpmiddleware
https://github.com/bastianrob/httpmiddleware
go golang http-middleware
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/bastianrob/httpmiddleware
- Owner: bastianrob
- Created: 2019-06-07T04:48:01.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-06-07T04:48:49.000Z (over 6 years ago)
- Last Synced: 2023-03-02T22:56:43.671Z (almost 3 years ago)
- Topics: go, golang, http-middleware
- Language: Go
- Size: 1000 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# HTTP Middleware
A middleware to chain HTTP request handler
## Example
```go
step1 := func(number int) HTTPMiddleware {
return func(h http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("number", strconv.Itoa(number))
h.ServeHTTP(w, r)
}
}
}
step2 := func(word string) HTTPMiddleware {
return func(h http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("word", word)
h.ServeHTTP(w, r)
}
}
}
api := func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
}
pipeline := httpmiddleware.NewPipeline().
Do(step1(100)).
Do(step2("I am a word")).
For(api)
router := http.NewServeMux()
router.Handle("/", pipeline)
req := httptest.NewRequest("GET", "/", nil)
rec := httptest.NewRecorder()
router.ServeHTTP(rec, req)
log.Println(rec.Code, rec.Header().Get("number"), rec.Header().Get("word"))
//200 100 I am a word
```