HTTP request routers are responsible for comparing the incoming requests against a list of predefined URL paths and calling the respective handlers. Handlers are responsible for writing response headers and bodies. Any Go object that satisfies the http.Handler interface can be a handler. Interestingly, Go's HTTP package is distributed with functions that can generate handlers, such as FileServer, RedirectHandler, and NotFoundHandler.