gor gor is a lightweight router for creating Go HTTP services . It helps build large REST API services that can be maintained as the project grows. gor is built on the context package. See examples Install go get -u github.com/pchchv/gor Features Fast Reliability Lightweight Context control Go.mod support 100% compatible with net/http Designed for modular/composable APIs Middlewares gor comes with an optional middleware package that provides a set of standard net/http middleware. Any middleware in the ecosystem that is also compatible with net/http can be used with gor's mux. Core middlewares gor/middleware Handler description AllowContentEncoding Provides a white list of Content-Encoding headers of the request AllowContentType Explicit white list of accepted Content-Types requests BasicAuth Basic HTTP authentication Compress Gzip compression for clients accepting compressed responses ContentCharset Providing encoding for Content-Type request headers CleanPath Clean the double slashes from request path GetHead Automatically route undefined HEAD requests to GET handlers Heartbeat Monitoring endpoint to check the pulse of the servers Logger Logs the start and end of each request with the elapsed processing time NoCache Sets response headers to prevent caching by clients Profiler Simple net/http/pprof connection to routers RealIP Sets RemoteAddr http.Request to X-Real-IP or X-Forwarded-For Recoverer Gracefully absorbs panic and prints a stack trace RequestID Injects a request ID in the context of each request RedirectSlashes Redirect slashes in routing paths RouteHeaders Handling routes for request headers SetHeader Middleware to set the key/response header value StripSlashes Strip slashes in routing paths Throttle Puts a ceiling on the number of concurrent requests Timeout Signals to the request context that the timeout deadline has been reached URLFormat Parse the extension from the url and put it in the request context WithValue Middleware to set the key/value in the context of a request context context is a tiny package available in stdlib since go1.7, providing a simple interface for context signaling via call stacks and goroutines. Learn more at The Go Blog