美文网首页
3.koa2请求数据

3.koa2请求数据

作者: 冷小谦 | 来源:发表于2018-10-30 17:31 被阅读38次

GET请求数据获取

koa获取GET请求数据是request对象中的query方法或者querystring方法,query返回是格式化好的参数对象,querystring返回的是请求的字符串。

  • 1.从上下文中直接获取
    请求对象ctx.query
    请求字符串ctx.querystring
  • 2.从上下文的request对象中获取
    请求对象ctx.request.query
    请求字符串ctx.request.querystring
const Koa = require('koa');
const app = new Koa();

app.use(async(ctx)=>{
    let url = ctx.url;
    let request = ctx.request;
    //从上下文的request对象中获取
    let req_query = request.query;
    let req_querystring = request.querystring
    //从上下文获取
    let ctx_query = ctx.query;
    let ctx_querystring = ctx.querystring
    ctx.body = {
        url,
        req_query,
        req_querystring,
        ctx_query,
        ctx_querystring
    }
})

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

POST请求参数

需要解析上下文请求对象req,将POST表单解析成querystring,再讲querystring解析成json

//将POST请求参数字符串解析成JSON
const Koa = require('koa');
const app = new Koa();

app.use(async(ctx)=>{
    if(ctx.url === '/' && ctx.method === 'GET'){
        let html = `
            <h1>koa2 request post demo</h1>
            <form action="/" method='POST'>
                <p>userName</p>
                <input type="userName"/><br />
                <p>nickName</p>
                <input type="nickName"/><br/>
                <p>email</p>
                <input type="email"/><br />
                <button type='submit'>submit</button>
            </form>
        `;
        ctx.body = html;
    }else if(ctx.url === '/' && ctx.method === 'POST'){
        console.log(ctx);
        let poseData = await parsePostData(ctx);
        ctx.body = poseData;
    }else{
        ctx.body = '<h1>404!!!</h1>'
    }
})

app.listen(3000,()=>{
    console.log('starting 3000')
})


function parseQueryStr(querystr){
    let queryData = {};
    let queryStrList = querystr.split('&');
    console.log(queryStrList);

    for(let [index,querystr] of queryStrList.entries()){
        let itemList = querystr.split('=');
        console.log(itemList)
        queryData[itemList[0]]=decodeURIComponent(itemList[0])
    }
    return queryData
}


function parsePostData(ctx){
    return new Promise((resolve,reject)=>{
        try{
            let postdata = '';
            ctx.req.addListener('data',(data)=>{
                postdata+=data;
            })
            ctx.req.addListener('end',function(){
                let parseData = parseQueryStr(postdata)
                resolve(parseData);
            })
        }catch(err){
            reject(err)
        }
    })
}

相关文章

  • 3.koa2请求数据

    GET请求数据获取 koa获取GET请求数据是request对象中的query方法或者querystring方法,...

  • request获取请求行数据和根据键名获取请求头数据

    requset对象学习之获取请求数据请求数据:请求行:请求方式 请求URL 协议getMethod();返回请求方...

  • request对象获取请求头数据和用户数据

    请求头数据:附加信息 请求行数据:(键值对) 请求用户数据:(键值对) 请求结果出现NULL,说明数据不存在。 p...

  • 1.3 NSURLSession 数据请求,下载,上传

    NSURLSession 数据请求,下载,上传 NSURLSession 数据请求.png

  • Node.js学习第二天笔记

    1 发送请求的方式 1.1 post请求 post请求的数据在请求体中,不在地址栏中,可以传输大数据请求的数据为字...

  • 异步请求数据的集中方法实现(1)——接口回调

      Android对于访问请求数据,经常需要异步访问访问网络,请求数据。对于请求的数据需要传递给数据使用的地方。所...

  • Vue的使用

    使用vue请求数据,首先添加文件引用: 请求单条数据 控制器请求方法:

  • HTTP简介

    HTTP请求 HTTP请求分为 GET 和 POST 两种 GET 请求数据 PIST 发送并请求数据 我们可以通...

  • GET和POST

    GET和POST请求的区别 GET请求 POST请求 提交 GET提交,请求的数据会附在URL之后(就是把数据放置...

  • 数据请求+

    1之前在用到服务器请求的数据时总是习惯用代理传值的方法 然后还要在请求体中进行传值 然后在需要用到数据的地方声明代...

网友评论

      本文标题:3.koa2请求数据

      本文链接:https://www.haomeiwen.com/subject/kgdgtqtx.html