美文网首页
四.Koa2基础教程04POST请求接收1

四.Koa2基础教程04POST请求接收1

作者: qqqc | 来源:发表于2018-02-13 11:47 被阅读0次

    这节主要学习POST请求的接受方法。对于POST请求的处理,Koa2没有封装方便的获取参数的方法,需要通过解析上下文context中的原生node.js请求对象req来获取。

    获取Post请求的步骤:

    1. 解析上下文ctx中的原生nodex.js对象req。
    2. 将POST表单数据解析成query string-字符串.(例如:user=jspang&age=18)
    3. 将字符串转换成JSON格式。

    ctx.request和ctx.req的区别

    • ctx.request:是Koa2中context经过封装的请求对象,它用起来更直观和简单。
    • ctx.req:是context提供的node.js原生HTTP请求对象。这个虽然不那么直观,但是可以得到更多的内容,适合我们深度编程。

    ctx.method 得到请求类型
    Koa2中提供了ctx.method属性,可以轻松的得到请求的类型,然后根据请求类型编写不同的相应方法,这在工作中非常常用。我们先来作个小例子,根据请求类型获得不同的页面内容。GET请求时得到表单填写页面,POST请求时,得到POST处理页面。

    const Koa = require('koa');
    const app = new Koa();
    app.use(async(ctx)=>{
        //当请求时GET请求时,显示表单让用户填写
        if(ctx.url==='/' && ctx.method === 'GET'){
            let html =`
                <h1>Koa2 request post demo</h1>
                <form method="POST"  action="/">
                    <p>userName</p>
                    <input name="userName" /> <br/>
                    <p>age</p>
                    <input name="age" /> <br/>
                    <p>webSite</p>
                    <input name='webSite' /><br/>
                    <button type="submit">submit</button>
                </form>
            `;
            ctx.body =html;
        //当请求时POST请求时
        }else if(ctx.url==='/' && ctx.method === 'POST'){
            ctx.body='接收到请求';
        }else{
            //其它请求显示404页面
            ctx.body='<h1>404!</h1>';
        }
    })
     
    app.listen(3000,()=>{
        console.log('[demo] server is starting at port 3000');
    })
    

    相关文章

      网友评论

          本文标题:四.Koa2基础教程04POST请求接收1

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