Skip to main content
Version: v4.0.x



The first parameter of the handler function is Request.

Request is a core Fastify object containing the following fields:

  • query - the parsed querystring, its format is specified by querystringParser
  • body - the request payload, see Content-Type Parser for details on what request payloads Fastify natively parses and how to support other content types
  • params - the params matching the URL
  • headers - the headers getter and setter
  • raw - the incoming HTTP request from Node core
  • server - The Fastify server instance, scoped to the current encapsulation context
  • id - the request ID
  • log - the logger instance of the incoming request
  • ip - the IP address of the incoming request
  • ips - an array of the IP addresses, ordered from closest to furthest, in the X-Forwarded-For header of the incoming request (only when the trustProxy option is enabled)
  • hostname - the host of the incoming request (derived from X-Forwarded-Host header when the trustProxy option is enabled). For HTTP/2 compatibility it returns :authority if no host header exists.
  • protocol - the protocol of the incoming request (https or http)
  • method - the method of the incoming request
  • url - the URL of the incoming request
  • routerMethod - the method defined for the router that is handling the request
  • routerPath - the path pattern defined for the router that is handling the request
  • is404 - true if request is being handled by 404 handler, false if it is not
  • connection - Deprecated, use socket instead. The underlying connection of the incoming request.
  • socket - the underlying connection of the incoming request
  • context - A Fastify internal object. You should not use it directly or modify it. It is useful to access one special key:
    • context.config - The route config object.


The request.headers is a getter that returns an Object with the headers of the incoming request. You can set custom headers like this:

request.headers = {
'foo': 'bar',
'baz': 'qux'

This operation will add to the request headers the new values that can be read calling Moreover, you can still access the standard request's headers with the request.raw.headers property.

Note: For performance reason on not found route, you may see that we will add an extra property Symbol('fastify.RequestAcceptVersion') on the headers.'/:params', options, function (request, reply) {
console.log(request.routerPath)'some info')