You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
	
	
							2.9 KiB
						
					
					
				fastify-formbody
A simple plugin for Fastify that adds a content type parser for
the content type application/x-www-form-urlencoded.
This branch targets Fastify v3. Please refer to this branch and related versions for Fastify ^2.0.0 compatibility.
Example
Given the following code:
const fastify = require('fastify')()
fastify.register(require('fastify-formbody'))
fastify.post('/', (req, reply) => {
  reply.send(req.body)
})
fastify.listen(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:
- bodyLimit: The maximum amount of bytes to process before returning an error. If the limit is exceeded, a- 500error will be returned immediately. When set to- undefinedthe limit will be set to whatever is configured on the parent Fastify instance. The default value is whatever is configured in fastify (- 1048576by default).
- parser: The default parser used is the querystring.parse built-in. You can change this default by passing a parser function e.g.- fastify.register(require('fastify-formbody'), { parser: str => myParser(str) })
Upgrading from 4.x
Previously, the external qs lib was used that did things like parse nested objects. For example:
- Input: foo[one]=foo&foo[two]=bar
- Parsed: { foo: { one: 'foo', two: 'bar' } }
The way this is handled now using the built-in querystring.parse:
- Input: foo[one]=foo&foo[two]=bar
- Parsed: { 'foo[one]': 'foo', 'foo[two]': 'bar' }
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