Koa2的post请求获取参数
对于post请求处理,koa2没有封装轻便的方法获取参数,需要通过解析上下文context中的原生node.js请求对象req来获取。
获取koa2post请求步骤:
解析上下文ctx中的原生nodex.js对象req。
- 将post表单数据解析成query String -字符串
- 将字符串转换成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提交按钮后,出现如下图所示:
原文:https://blog.csdn.net/Lschange/article/details/80590775