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 byquerystringParser
body
- the request payload, see Content-Type Parser for details on what request payloads Fastify natively parses and how to support other content typesparams
- the params matching the URLheaders
- the headers getter and setterraw
- the incoming HTTP request from Node coreserver
- The Fastify server instance, scoped to the current encapsulation contextid
- the request IDlog
- the logger instance of the incoming requestip
- the IP address of the incoming requestips
- an array of the IP addresses, ordered from closest to furthest, in theX-Forwarded-For
header of the incoming request (only when thetrustProxy
option is enabled)hostname
- the host of the incoming request (derived fromX-Forwarded-Host
header when thetrustProxy
option is enabled). For HTTP/2 compatibility it returns:authority
if no host header exists.protocol
- the protocol of the incoming request (https
orhttp
)method
- the method of the incoming requesturl
- the URL of the incoming requestrouterMethod
- the method defined for the router that is handling the requestrouterPath
- the path pattern defined for the router that is handling the requestis404
- true if request is being handled by 404 handler, false if it is notconnection
- Deprecated, usesocket
instead. The underlying connection of the incoming request.socket
- the underlying connection of the incoming requestcontext
- A Fastify internal object. You should not use it directly or modify it. It is useful to access one special key:context.config
- The routeconfig
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 request.headers.bar
. 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 propertySymbol('fastify.RequestAcceptVersion')
on the headers.
fastify.post('/:params', options, function (request, reply) {
console.log(request.body)
console.log(request.query)
console.log(request.params)
console.log(request.headers)
console.log(request.raw)
console.log(request.server)
console.log(request.id)
console.log(request.ip)
console.log(request.ips)
console.log(request.hostname)
console.log(request.protocol)
console.log(request.url)
console.log(request.routerMethod)
console.log(request.routerPath)
request.log.info('some info')
})