koa2接收Post参数由于没有在上下文对象上解析,所以需要用node 原生req解析。

获取到的参数,要注意转码问题。

const Koa = require('koa');

const app = new Koa();
app.use(async(ctx)=>{
if(ctx.url === '/' && ctx.method === 'GET'){
//显示表单页面
let html = `
<h1> KOA2 request post</h1>
<form method='post' action='/'>
<p>username: <input name="username"/></p>
<p>age: <input name="age"/></p>
<p>website: <input name="website"/></p>
<input type="submit" />
</form>
`;
ctx.body = html;
}else if(ctx.url === '/' && ctx.method === 'POST'){
let postData = await parsePostData(ctx);
let result = parseQueryStr(postData)
ctx.body = result;
}else{
ctx.body = '<h1>404!</h1>'
}
}); function parsePostData(ctx){
return new Promise((resolve,reject)=>{
try {
let postdata = '';
ctx.req.addListener('data',(data)=>{
postdata += data;
});
ctx.req.on("end",function(){
resolve(postdata);
})
} catch (error) {
reject(error);
}
});
} function parseQueryStr(queryStr){
let queryData = {};
let queryList = queryStr.split('&');
console.log(queryList.entries())
for(let [index,queryStr] of queryList.entries()){
let itemArr = queryStr.split("=");
queryData[itemArr[0]] = decodeURIComponent(itemArr[1]); //转码
}
return queryData;
} app.listen(3000,()=>{
console.log("app starting ...")
});

最新文章

  1. oracle基本操作符/运算符/操作语言
  2. Redis内存缓存系统入门
  3. 8 个最棒的 .NET 开发相关工具
  4. MySQL学习笔记--数据类型
  5. 阿里云+wordpress搭建个人博客网站
  6. java web 学习十三(使用session防止表单重复提交)
  7. Markdown編輯器
  8. String+,StringBuilder,String.format运行效率比较
  9. windows7任务栏上的图标修复
  10. linux命令之文件、文件夹操作
  11. 域名地址默认跳转到www(301重定向)
  12. uploadify 在chrome上崩溃的解决办法
  13. Linux Bash Shell字符串截取
  14. 微信小程序转发微信小程序转发
  15. Oracle查询和过滤重复数据
  16. Solrcloud(Solr集群)
  17. can&#39;t open file &#39;manage.py&#39;: [Errno 2] No such file or directory
  18. 打印低头思故乡 java
  19. HDOJ2089 不要62
  20. 关于javascript的cookie的封装

热门文章

  1. slice()
  2. (广搜)Fire Game -- FZU -- 2150
  3. hdu 5072 两两(不)互质个数逆向+容斥
  4. Monkey学习网址
  5. [LISP] LISP Collections
  6. 修改vsftpd的默认根目录
  7. Windows下Node.js的安装与配置
  8. ServiceStack DateTime数据类型转Json出现的困扰
  9. [转载]Java并发编程:深入剖析ThreadLocal
  10. Spring static 静态属性注入