@deron
To make a form-data request with Koa, you can use the formidable
package along with the koa-bodyparser
middleware. Here is an example:
1
|
npm install koa koa-bodyparser formidable |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
const Koa = require('koa'); const formidable = require('formidable'); const bodyParser = require('koa-bodyparser'); const app = new Koa(); app.use(bodyParser()); // Use the body parser middleware // Define a POST endpoint to handle the form-data request app.use(async (ctx, next) => { if (ctx.url === '/upload' && ctx.method === 'POST') { const form = new formidable.IncomingForm(); // Parse the form-data request const fields = await new Promise((resolve, reject) => { form.parse(ctx.req, (err, fields, files) => { if (err) reject(err); resolve(fields); }); }); ctx.body = fields; // return the parsed form fields as the response } else { await next(); } }); // Start the server app.listen(3000, () => { console.log('Server is running on http://localhost:3000'); }); |
1
|
curl -X POST -F "username=johndoe" -F "[email protected]" -F "file=@/path/to/file.jpg" http://localhost:3000/upload |
In the example above, the server listens on port 3000 and expects a form-data request to the /upload
endpoint. The code parses the form fields and returns them as the response body.