-
get和delete都通过ctx.query 获取参数
-
post和put都需要通过ctx.request.body 且需要中间件(koa-bodyparser)
// 安装
yarn add koa-bodyparser --save
// 使用
const bodyParser = require('koa-bodyparser')
app.use(bodyParser());
router.get("/user", async (ctx)=>{ ctx.body = ctx.query })
router.post("/add", async (ctx)=>{
console.log(ctx.request.body)
// ctx.body = "接收表单传来的数据"
ctx.body =ctx.request.body
})
router.put("/user/edit", async (ctx)=>{ ctx.body =ctx.request.body })
router.delete("/user/delete", async (ctx)=>{ ctx.body =ctx.query })
3. koa-body
在Koa框架中,处理post请求数据的有一个koa-bodyparser模块,但是这个模块只能处理post的数据,不能够处理文件类型的传输。
koa-body不仅能处理post请求的数据,同时也能够处理文件类型的上传。传参为form-data时。
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const Router = require('koa-router');
const body = require('koa-body');
const app = new Koa;
const router = new Router;
app.use(body()); // 不仅处理post请求的数据,也能处理文件类型
router.post('/getData', (ctx, next) => {
const data = ctx.request.body; //获取发送的请求参数
ctx.body = data;
console.log(ctx.body);
})
app.use(router.routes(), router.allowedMethods());
app.listen(3000, () => console.log('http://localhost:3000'))
当传值为文件类型时,取值变为 ctx.request.files
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const Router = require('koa-router');
const body = require('koa-body');
const static = require('koa-static');
const path = require('path')
const app = new Koa;
const router = new Router;
app.use(body({
multipart: true
}));
router.post('/getData', (ctx, next) => {
const files = ctx.request.files; //获取上传的image数据
ctx.body = files;
console.log(ctx.body);
})
app.use(static(path.join(__dirname, '/public')));
app.use(router.routes(), router.allowedMethods());
app.listen(3000, () => console.log('http://localhost:3000'))