Koa-Body: Introduction and Comprehensive API Guide
Koa-body is a popular middleware for Koa, a next-generation web framework for Node.js. It seamlessly handles the parsing of request bodies, making it a versatile tool for developers. This article provides an in-depth look at the Koa-body API with numerous code snippets to help you get started quickly.
1. Basic Usage
Install koa-body via npm:
npm install koa-body
2. Importing and Configuring Koa-Body
const Koa = require('koa');
const koaBody = require('koa-body');
const app = new Koa();
app.use(koaBody());
3. Example API: Parsing JSON Body
Simple JSON body parsing:
app.use(async (ctx) => {
if (ctx.method === 'POST') {
ctx.body = ctx.request.body;
} else {
ctx.body = 'Send a POST request with a JSON body';
}
});
// curl -X POST http://localhost:3000 -H "Content-Type: application/json" -d '{"name": "John Doe"}'
4. Example API: Parsing Form Data
Handling URL-encoded form data:
app.use(async (ctx) => {
if (ctx.method === 'POST') {
ctx.body = ctx.request.body;
} else {
ctx.body = 'Send a POST request with form data';
}
});
// curl -X POST http://localhost:3000 -H "Content-Type: application/x-www-form-urlencoded" -d "name=John Doe"
5. Example API: Parsing Multi-Part Form Data
Handling file uploads with multi-part form data:
app.use(koaBody({
multipart: true,
formidable: {
uploadDir: './uploads',
keepExtensions: true
}
}));
app.use(async (ctx) => {
if (ctx.method === 'POST') {
ctx.body = ctx.request.files;
} else {
ctx.body = 'Send a POST request with multi-part form data';
}
});
// curl -X POST http://localhost:3000 -F "file=@/path/to/file"
6. Additional Options
Koa-body includes additional configuration options:
app.use(koaBody({
text: true,
urlencoded: true,
multipart: true,
encoding: 'gzip',
formLimit: '1mb',
jsonLimit: '1mb',
strict: true,
onError: (err, ctx) => {
ctx.throw('body parse error', 422);
}
}));
7. Full Application Example
Here’s a complete example using several Koa-body features:
const Koa = require('koa');
const Router = require('@koa/router');
const koaBody = require('koa-body');
const app = new Koa();
const router = new Router();
app.use(koaBody({
multipart: true,
urlencoded: true,
multipart: true
}));
router.post('/upload', async (ctx) => {
ctx.body = ctx.request.files;
});
router.post('/json', async (ctx) => {
ctx.body = ctx.request.body;
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
With these examples and configurations, you are now well-equipped to use Koa-body in your next Koa project! Happy coding!
Hash: 6d2b5710bb0a79cc41aed0fb3f957e85e9ff8e3232f7726c58830393443e27e3