koa-body
一、认识
koa-body
是专门为 Koa
框架设计的中间件,其主要功能是解析 HTTP
请求体数据,支持多种格式,方便在服务端获取请求中提交的数据。支持的格式如下:
-
XML
格式:text/xml
、application/xml
-
Form
:application/x-www-form-urlencoded
-
JSON
格式:application/json
、application/json-patch+json
、application/vnd.api+json
、application/csp-report
、application/reports+json
、application/scim+json
-
Text
格式:text/plain
-
FormData
格式:multipart/form-data
koa-body
与 koa-multer
相比: 专门用于处理文件上传,支持 multipart/form-data
。主要关注文件上传,不处理 JSON
或 URL
编码数据的解析。
koa-body
与 koa-bodyparser
相比: koa-bodyparser
专注于解析 application/json
和 application/x-www-form-urlencoded
。 不支持文件上传,无法处理 multipart/form-data
。
因此 koa-body
代替了 koa-bodyparser
和 koa-multer
。只需使用 koa-body
一个中间件即可实现 post
` 请求
二、API
三、语法
const Koa = require("koa");
const KoaBody = require("koa-body");
const KoaRouter = require("koa-router");
const PORT = 3000;
const app = new Koa();
const { koaBody } = KoaBody;
const router = new KoaRouter();
const getDetail = async (ctx)=>{
const id = ctx.params.id || ctx.query.id;
console.log("id", id);
}
const editItem = async (ctx)=>{
const { body } = ctx.request;
const id = ctx.params.id || body.id;
console.log("id", id);
console.log("body", body);
}
router.get("/getList", getList);
router.get("/getDetail", getDetail);
router.get("/getDetail/:id", getDetail);
router.post("/addItem", addItem);
router.post("/editItem", editItem);
router.post("/editItem/:id", editItem);
router.post("/removeItem", removeItem);
router.post("/removeItem/:id", removeItem);
app.use(
koaBody({
text: true,
json: true,
encoding: "gzip",
multipart: true,
urlencoded: true,
formidable: {
uploadDir: uploadDir,
keepExtensions: true,
},
})
);
app.use(router.routes()).use(router.allowedMethods());
app.listen(port, () => {
console.log("Koa 服务启动成功!!!");
});