node中间件koa-bodyparser

koa-bodyparser中间件

这个中间件可以将post请求的参数转为json格式返回

koa接收到的post请求参数并不是json格式,我们需要将其转换为json
使用方法:安装后直接在ctx.request.body内获取POST请求参数,中间件自动给我们解析为json
安装:
npm install --save koa-bodyparser

const Koa = require('koa');
const app = new Koa();
// 引入koa-bodyparser中间件,这个中间件可以将post请求的参数转为json格式返回
const bodyParser = require('koa-bodyparser');
// 使用中间件后,可以用ctx.request.body进行获取POST请求参数,中间件自动给我们解析为json
app.use(bodyParser());
// request.method可以获取请求方法。get,post或者其他类型(request对象被封在ctx内,所以也可以ctx.method获取)
app.use(async(ctx)=>{
    if (ctx.url === '/' &&ctx.method === 'POST'){
        let postdata = ctx.request.body
        ctx.body = postdata
    }else {
        // 其他请求显示404
        ctx.body = '

404!

' } }) app.listen(3000,()=>{ console.log('server starting at localhost:3000') })

如果不用中间件来写,就需要我们自己拼接:

const Koa = require('koa');
const app = new Koa();
// request.method可以获取请求方法。get,post或者其他类型(request对象被封在ctx内,所以也可以ctx.method获取)
app.use(async(ctx)=>{
 if (ctx.url === '/' &&ctx.method === 'POST'){
        let postdata = await parsePostData(ctx)
        ctx.body = postdata
    }else {
        // 其他请求显示404
        ctx.body = '

404!

' } }) // 将post请求参数拼接成一个字符串 function parsePostData(ctx){ return new Promise((resolve,reject)=>{ try{ let postdata = '' // 请求流传送时触发 ctx.req.on('data',(data)=>{ postdata+=data }) // 请求结束时触发 ctx.req.addListener('end',()=>{ let postData = parseQueryStr(postdata) return resolve(postData) }) }catch(error){ reject(error) } }) } // 字符串封装成JSON对象 function parseQueryStr(queryStr){ let queryData = {} let queryList = queryStr.split('&') console.log(queryList) for ( let [index,item] of queryList.entries()){ let itemlist = item.split('=') console.log(itemlist) // 向queryData对象内添加键值对 // decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 queryData[itemlist[0]] = decodeURIComponent(itemlist[1]) } return queryData } app.listen(3000,()=>{ console.log('server starting at localhost:3000') })

你可能感兴趣的:(node中间件koa-bodyparser)