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.
		
		
		
		
		
			
		
			
				
					42 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					42 lines
				
				1.1 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | 
 | ||
|  | const fastify = require('../fastify')({ logger: true }) | ||
|  | const jsonParser = require('fast-json-body') | ||
|  | const qs = require('qs') | ||
|  | 
 | ||
|  | // Handled by fastify
 | ||
|  | // curl -X POST -d '{"hello":"world"}' -H'Content-type: application/json' http://localhost:3000/
 | ||
|  | 
 | ||
|  | // curl -X POST -d '{"hello":"world"}' -H'Content-type: application/jsoff' http://localhost:3000/
 | ||
|  | fastify.addContentTypeParser('application/jsoff', function (request, payload, done) { | ||
|  |   jsonParser(payload, function (err, body) { | ||
|  |     done(err, body) | ||
|  |   }) | ||
|  | }) | ||
|  | 
 | ||
|  | // curl -X POST -d 'hello=world' -H'Content-type: application/x-www-form-urlencoded' http://localhost:3000/
 | ||
|  | fastify.addContentTypeParser('application/x-www-form-urlencoded', function (request, payload, done) { | ||
|  |   let body = '' | ||
|  |   payload.on('data', function (data) { | ||
|  |     body += data | ||
|  |   }) | ||
|  |   payload.on('end', function () { | ||
|  |     try { | ||
|  |       const parsed = qs.parse(body) | ||
|  |       done(null, parsed) | ||
|  |     } catch (e) { | ||
|  |       done(e) | ||
|  |     } | ||
|  |   }) | ||
|  |   payload.on('error', done) | ||
|  | }) | ||
|  | 
 | ||
|  | fastify | ||
|  |   .post('/', function (req, reply) { | ||
|  |     reply.send(req.body) | ||
|  |   }) | ||
|  | 
 | ||
|  | fastify.listen(3000, err => { | ||
|  |   if (err) throw err | ||
|  | }) |