rembrembdocs

Version: latest (v5.8.x)

Request

The first parameter of the handler function is Request.

Request is a core Fastify object containing the following fields:

Headers

The request.headers is a getter that returns an object with the headers of the incoming request. Set custom headers as follows:

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

This operation adds new values to the request headers, accessible via request.headers.bar. Standard request headers remain accessible via request.raw.headers.

For performance reasons, Symbol('fastify.RequestAcceptVersion') may be added to headers on not found routes.

ℹ️ Note: Schema validation may mutate the request.headers and request.raw.headers objects, causing the headers to become empty.

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.host)  console.log(request.hostname)  console.log(request.port)  console.log(request.protocol)  console.log(request.url)  console.log(request.routeOptions.method)  console.log(request.routeOptions.bodyLimit)  console.log(request.routeOptions.method)  console.log(request.routeOptions.url)  console.log(request.routeOptions.attachValidation)  console.log(request.routeOptions.logLevel)  console.log(request.routeOptions.version)  console.log(request.routeOptions.exposeHeadRoute)  console.log(request.routeOptions.prefixTrailingSlash)  console.log(request.routeOptions.logLevel)  request.log.info('some info')})

.getValidationFunction(schema | httpPart)

By calling this function with a provided schema or httpPart, it returns a validation function to validate diverse inputs. It returns undefined if no serialization function is found using the provided inputs.

This function has an errors property. Errors encountered during the last validation are assigned to errors.

const validate = request                  .getValidationFunction({                    type: 'object',                    properties: {                      foo: {                        type: 'string'                      }                    }                  })console.log(validate({ foo: 'bar' })) // trueconsole.log(validate.errors) // null// orconst validate = request                  .getValidationFunction('body')console.log(validate({ foo: 0.5 })) // falseconsole.log(validate.errors) // validation errors

See .compileValidationSchema(schema, [httpStatus]) for more information on compiling validation schemas.

.compileValidationSchema(schema, [httpPart])

This function compiles a validation schema and returns a function to validate data. The returned function (a.k.a. validation function) is compiled using the provided SchemaController#ValidationCompiler. A WeakMap is used to cache this, reducing compilation calls.

The optional parameter httpPart, if provided, is forwarded to the ValidationCompiler, allowing it to compile the validation function if a custom ValidationCompiler is provided for the route.

This function has an errors property. Errors encountered during the last validation are assigned to errors.

const validate = request                  .compileValidationSchema({                    type: 'object',                    properties: {                      foo: {                        type: 'string'                      }                    }                  })console.log(validate({ foo: 'bar' })) // trueconsole.log(validate.errors) // null// orconst validate = request                  .compileValidationSchema({                    type: 'object',                    properties: {                      foo: {                        type: 'string'                      }                    }                  }, 200)console.log(validate({ hello: 'world' })) // falseconsole.log(validate.errors) // validation errors

Be careful when using this function, as it caches compiled validation functions based on the provided schema. If schemas are mutated or changed, the validation functions will not detect the alterations and will reuse the previously compiled validation function, as the cache is based on the schema's reference.

If schema properties need to be changed, create a new schema object to benefit from the cache mechanism.

Using the following schema as an example:

const schema1 = {  type: 'object',  properties: {    foo: {      type: 'string'    }  }}

Not

const validate = request.compileValidationSchema(schema1)// Later on...schema1.properties.foo.type = 'integer'const newValidate = request.compileValidationSchema(schema1)console.log(newValidate === validate) // true

Instead

const validate = request.compileValidationSchema(schema1)// Later on...const newSchema = Object.assign({}, schema1)newSchema.properties.foo.type = 'integer'const newValidate = request.compileValidationSchema(newSchema)console.log(newValidate === validate) // false

.validateInput(data, [schema | httpPart], [httpPart])

This function validates the input based on the provided schema or HTTP part. If both are provided, the httpPart parameter takes precedence.

If no validation function exists for a given schema, a new validation function will be compiled, forwarding the httpPart if provided.

request  .validateInput({ foo: 'bar'}, {    type: 'object',    properties: {      foo: {        type: 'string'      }    }  }) // true// orrequest  .validateInput({ foo: 'bar'}, {    type: 'object',    properties: {      foo: {        type: 'string'      }    }  }, 'body') // true// orrequest  .validateInput({ hello: 'world'}, 'query') // false

See .compileValidationSchema(schema, [httpStatus]) for more information on compiling validation schemas.