go get -u github.com/go-pkgz/rest
Adds info to every response header:
- App-Name - application name
- App-Version - application version
- Org - organization
- M-Host - host name from instance-level
$MHOST
env
Responds with pong
on GET /ping
. Also responds to anything with /ping
suffix, like /v2/ping
example for both:
> http GET https://remark42.radio-t.com/ping
HTTP/1.1 200 OK
Date: Sun, 15 Jul 2018 19:40:31 GMT
Content-Type: text/plain
Content-Length: 4
Connection: keep-alive
App-Name: remark42
App-Version: master-ed92a0b-20180630-15:59:56
Org: Umputun
pong
Logs all info about request, including user, method, status code, response size, url, elapsed time, request body (optional). Can be customized by passing flags - LogNone, LogAll, LogUser and LogBody. Flags can be combined (provided multiple times)
Recoverer is a middleware that recovers from panics, logs the panic (and a backtrace), and returns a HTTP 500 (Internal Server Error) status if possible.
OnlyFrom middleware allows access for limited list of source IPs. Such IPs can be defined as complete ip (like 192.168.1.12), prefix (129.168.) or CIDR (192.168.0.0/16)
Metrics middleware responds to GET /metrics with list of expvar. Optionally allows to restrict list of source ips.
BlackWords middleware doesn't allow user-defined words in the request body.
rest.JSON
- map alias, just for conveniencetype JSON map[string]interface{}
rest.RenderJSON
- renders json response frominterface{}
rest.RenderJSONFromBytes
- renders json response from[]byte
rest.RenderJSONWithHTML
- renders json response with html tags and forcedcharset=utf-8
rest.SendErrorJSON
- makes{error: blah, details: blah}
json body and responds with given error code. Also adds context to logged message
Cache wrapper provides loading cache for rest/http responses. See cache readme for more details and examples.