koa添加中间件无法解析post的参数

问题现象:

今天新搭建了一个koa的脚手架,发现不能正常解析移动端传过来的post,或者post的参数传nil可以解析,传参数就不可以,客户端那边的ContentType是text/plain,错误内容:

JSON text did not start with array or object and option to allow fragments not set.” UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x28318b060 {Error Domain=com.alamofire.error.serialization.response Code=-1011 “Request failed: unsupported media type (415)” UserInfo={NSLocalizedDescription=Request failed: unsupported media type (415), NSErrorFailingURLKey=http://apppreview.frpgz1.idcfengye.com/api/getAppPreviewQAList, com.alamofire.serialization.response.error.data={length = 30, bytes = 0x73706563 69666965 6420656e 636f6469 … 7570706f 72746564 }

因为koa无法解析post,所以需要中间件,脚手架默认使用的koa-body

route这边使用的是require(‘koa-body’);

设置如下:

app.use(koaBody({
  multipart:true, // 支持文件上传
  encoding:'gzip',
  formidable:{
    uploadDir:path.join(__dirname,appConfig.upload.dir), // 设置文件上传目录
    keepExtensions: true,    // 保持文件的后缀
    maxFieldsSize:appConfig.upload.size, // 文件上传大小限制
    onFileBegin:(name,file) => { // 文件上传前的操作

    },
  }
}));

这样设置无法正确解析post请求,后来又加了require(‘koa-bodyparser’);,

app.use(bodyParser1({
    // enableTypes: ['text/plain', 'text'],
    // onerror: function (err, ctx) {
    //     ctx.throw('body parse error', 422);
    // }
}));

但是发现还是不行,一想,难道是koa-body不行,两个都用后面的无效?

遂把koa-body去掉。果然就可以了。

解决方法:

只使用require(‘koa-bodyparser’);,即可。

分析:

但是目前大多数都是用koa-body代替了bodyparser,正常也是body可以解析post,这次不知道是为什么除了问题,有时间再研究下。


   转载规则


《koa添加中间件无法解析post的参数》 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
搭建内网穿透之frp 搭建内网穿透之frp
FRP Mac、Linux、树莓派使用教程首先打开网站,进入客户端下载选择FRP客户端就可以看到FRP客户端下载的地方,可以根据自己的操作系统下载。 客户端下载 Mac、Linux命令,打开终端需要进入到sunny文件所在的目录,当下面命令
2020-12-01
下一篇 
QMUI换肤 QMUI换肤
2020-11-27
  目录