koa2 接收post参数
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 ...")
});
koa2 接收post参数的更多相关文章
- webapi 控制器接收POST参数时必须以对象的方式接收
webapi 控制器接收POST参数时必须以对象的方式接收
- SpringMVC——接收请求参数和页面传参
Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- struts2视频学习笔记 11-12(动态方法调用,接收请求参数)
课时11 动态方法调用 如果Action中存在多个方法时,可以使用!+方法名调用指定方法.(不推荐使用) public String execute(){ setMsg("execute&q ...
- ASP.NET MVC 后台接收集合参数和 jquery ajax 传值
MVC 接收参数数组(集合) 示例样本: public class Person { public string FirstName { get; set; } publi ...
- springmvc 传递和接收数组参数
java url中如何传递数组,springMVC框架controller类如何接收数组参数? 下面介绍一下URL中传递数组参数方法: dd.do?titles[]=col1&titles[] ...
- Page_Load接收随机参数放到字典类中
Page_Load接收随机参数放到字典类中,可以用作签名.普通的接收url的参数可以用作下面这种模式: int appid =Convert.ToInt32(param["appid&qu ...
- 如何让Spring MVC接收的参数可以转换为java对象
场景: web.xml中增加了一个DispatcherServlet配置,并在同级目录下添加了**-servlert.xml文件,搭建起了一个spring mvc的restful访问接口. 问题描述: ...
- Struts系列笔记(6)---action接收请求参数
action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...
随机推荐
- XML xmlns
xmlns xml namespaces 参考 http://www.w3school.com.cn/tags/tag_prop_xmlns.asp http://www.w3school.com.c ...
- C++标准库addressof的应用
C++11将addressof作为标准库的一部分,用于取变量和函数等内存地址. 代码示例: #include <memory> #include <stdio.h> void ...
- vs和vim
vs:win+R键 输入DEVENV(DEV代表development,ENV代表environment)可以召唤vs,但是有的时候召唤不出来,是因为你的vs安装在c盘program里也就是默认安装, ...
- _编程语言_C语言_C++_时间
C++ 标准库没有提供日期类型,使用C预压的日期和事件操作. 使用时引入头文件 <ctime> . 四个和事件相关的函数: clock_t // 系统时间和日期表示为某种整数time_t ...
- h5canvas绘制loading页面
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- jvm虚拟机---执行引擎子系统
Java虚拟机只与Class文件相关联,它规定了Class文件应该具有的格式,而不论该文件是由什么语言编写并编译而来.所以,任何语言只要能够最终编译成符合Java虚拟机要求的Class文件,就可以运行 ...
- unigui导出EXCEL使用NATIVEEXCEL
unigui导出EXCEL使用NATIVEEXCEL // 需要nativeexcel控件// cxg 2017-9-9 unit myExcel; interface uses System.Sys ...
- 中科大debian 9 + docker源设置
wget https://mirrors.ustc.edu.cn/repogen/conf/debian-http-4-stretch -O sources.list sudo apt-get ins ...
- Django:全文检索功能可参考博客
https://blog.csdn.net/AC_hell/article/details/52875927 https://www.zmrenwu.com/courses/django-blog-t ...
- .Net Core Razor 预编译,动态编译,混合编译
预编译 预编译是ASP .Net Core的默认方式.在发布时,默认会将系统中的所有Razor视图进行预编译.编译好的视图DLL统一命名为 xxx.PrecompiledViews.dll 或者 xx ...