我使用postman测试api,后台是使用koa2。但是ctx.request.body无法获取数据
这次postman
这次后端逻辑:
exports.createAccount=async (ctx,next)=>{ console.log(ctx); let info=ctx.request.body; console.log(info); try{ let result= await account.createAccount(info.email,info.tel,info.password); console.log(result); ctx.body={state:"1",account:result}; }catch(e){ //写入日志 ctx.body={state:"-1"} }}
这次app入口文件
const Koa=require('koa');const app=new Koa();const convert = require('koa-convert');const json = require('koa-json');const bodyparser = require('koa-bodyparser')();const koabody = require('koa-body');const Router=require('./router');const socket=require('./middlewares/socket');socket.init(app);//传入app实例app.use(Router);app.use(convert(bodyparser));app.use(convert(json()));app.use(convert(koabody({})));app.listen(3000);
目前的问题:ctx.request.body无法获取 json数据
但是我使用ctx.req.on('data',data => console.log(data))能打印出上传来的数据。我认为是json数据解析出现问题,请问我应该怎么配置!
解决方案
找到答案了,这个坑!填了。是因为body解析在逻辑运行之后,导致没能正确解析。
app.use(Router);app.use(convert(bodyparser));
改为
app.use(convert(bodyparser));app.use(Router);
生命曾可贵,要理智的分析问题