Home

Awesome

@fastify/formbody

CI NPM version NPM downloads JavaScript Style Guide

A simple plugin for Fastify that adds a content type parser for the content type application/x-www-form-urlencoded.

This branch targets Fastify v4. Please refer to this branch and related versions for Fastify ^2.0.0 compatibility.

For Fastify v3 support, please use @fastify/formbody ^6.0.1.

Install

npm i @fastify/formbody

Example

Given the following code:

const fastify = require('fastify')()

fastify.register(require('@fastify/formbody'))

fastify.post('/', (req, reply) => {
  reply.send(req.body)
})

fastify.listen({ port: 8000 }, (err) => {
  if (err) throw err
})

And a POST body of:

foo=foo&bar=bar&answer=42

The sent reply would be the object:

{
  foo: 'foo',
  bar: 'bar',
  answer: 42
}

Options

The plugin accepts an options object with the following properties:

Upgrading from 4.x

Previously, the external qs lib was used that did things like parse nested objects. For example:

The way this is handled now using the built-in querystring.parse:

If you need nested parsing, you must configure it manually by installing the qs lib (npm i qs), and then configure an optional parser:

const fastify = require('fastify')()
const qs = require('qs')
fastify.register(require('@fastify/formbody'), { parser: str => qs.parse(str) })

License

Licensed under MIT