This library contains a number of useful middlewares for writing a HTTP server in Go. For more information and package documentation, please see the godoc documentation.
rest
exposes a number of HTTP error handlers - for example,
rest.ServerError(w, r, err)
will write a 500 server error to w. By default,
these error handlers will write a generic JSON response over the wire, using
fields specified by the HTTP problem spec.
You can define a custom error handler if you like (say if you want to return a HTML server error, or 404 error or similar) by calling RegisterHandler:
rest.RegisterHandler(500, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
err := rest.CtxErr(r)
fmt.Println("Server error:", err)
w.Header().Set("Content-Type", "text/html")
w.WriteHeader(500)
w.Write([]byte("<html><body>Server Error</body></html>"))
}))
Set the DEBUG_HTTP_TRAFFIC
environment variable to print out all
request/response traffic being made by the client.
rest
also includes a Transport
that is a drop in for a http.Transport
,
but includes support for debugging HTTP requests. Add it like so:
client := http.Client{
Transport: &rest.Transport{
Debug: true,
Output: os.Stderr,
Transport: http.DefaultTransport,
},
}