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.
		
		
		
		
		
			|  | 3 years ago | |
|---|---|---|
| .. | ||
| .github | 3 years ago | |
| test | 3 years ago | |
| types | 3 years ago | |
| .editorconfig | 3 years ago | |
| .taprc | 3 years ago | |
| LICENSE | 3 years ago | |
| Readme.md | 3 years ago | |
| formbody.js | 3 years ago | |
| package.json | 3 years ago | |
		
			
				
				Readme.md
			
		
		
			
			
		
	
	@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 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.
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:
- 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