Koa2的post请求获取参数

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

获取koa2post请求步骤:

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

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

  1. ctx.request:是Koa2中context经过封装的请求对象,它用起来更直观和简单。
  2. 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提交按钮后,出现如下图所示:

 

原文:https://blog.csdn.net/Lschange/article/details/80590775

 

posted @ 2020-05-18 11:14  彩宏糖  阅读(3949)  评论(0编辑  收藏  举报