koa2的post请求参数(三)

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

获取koa2的post请求的步骤:

1.解析上下文ctx中的原生nodex.js对象req。
2.将POST表单数据解析成query string-字符串。
3.将字符串转换成JSON格式。

ctx.requset跟ctx.req的具体区别,对于我们做深度编程时,有很大的帮助:

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

ctx.method可以得到请求的类型,方便我们判断是什么请求类型,进行不同的操作。

const Koa = require('koa');
const app = new Koa();
app.use(async(ctx)=>{
    //当请求时GET请求时,显示表单让用户填写
    // 我们利用上文中说到的ctx.method判断请求的类型
    if(ctx.url==='/' && ctx.method === 'GET'){
        let html =`
            <form method="POST"  action="/">
                <p>userName</p>
                <input name="name" /> <br/>
                <p>age</p>
                <input name="sex" /> <br/>
                <p>webSite</p>
                <input name='way' /><br/>
                <button type="submit">submit</button>
            </form>
        `;
        // 如果是get请求我们把这个表单进行显示,当点击提交按钮时,我们以post的方式进行提交
        ctx.body =html;
        //当请求时POST请求时
    }else if(ctx.url==='/' && ctx.method === 'POST'){
        // 当请求为post请求的时候,我们在页面中显示下面的这句话,证明我们post请求参数是成功的
        ctx.body='接收到请求';
    }
})

app.listen(3001,()=>{
    console.log('success on port 3001');
})

当我们用node index.js启动后会在命令行看到‘success on port 3001’,说明我们的代码没有错,已经正常启动,我们打开浏览器,输入localhost:3001,页面会出现如下图所示的表单:


我们随便输入一些值,点击submit提交按钮后,出现如下图所示:


说明我们的post请求已经成功

猜你喜欢

转载自blog.csdn.net/lschange/article/details/80590775