Koa2 请求数据获取
GET请求数据获取
在koa
中,获取GET请求数据是从koa
中equest
对象中的query
方法或querystring
方法,query
返回是格式化好的参数对象,querystring
返回的是请求字符串,因为ctx
对request
的API
有直接引用的方式,所以获取GET
请求数据有两个方法。
- 1.从上下文中直接获取
- 请求对象
ctx.query
,返回结果如 { a:1, b:2 } - 请求字符串
ctx.querystring
,返回结果如 a=1&b=2
- 请求对象
- 2.从上下文的
request
对象中获取- 请求对象
ctx.request.query
,返回结果如 { a:1, b:2 } - 请求字符串
ctx.request.querystring
,返回结果如a=1&b=2
- 请求对象
示例代码
// index.js
const Koa = require("koa");
const app = new Koa();
app.use(async (ctx) => {
let url = ctx.url;
// 从上下文的request对象中获取
let request = ctx.request;
let req_query = request.query;
let req_querystring = request.querystring;
// 从上下文中直接获取
let ctx_query = ctx.query;
let ctx_querystring = ctx.querystring;
ctx.body = {
url,
req_query,
req_querystring,
ctx_query,
ctx_querystring,
};
});
app.listen(3000);
执行程序
执行node index.js
然后访问 http://localhost:3000/page/user?a=1&b=2 页面会出现以下结果
koa-bodyparser中间件
对于POST的请求,koa-bodyparser中间件可以把koa2上下文的formData数据解析到ctx.request.body中
安装koa-bodyparser
npm i koa-bodyparser
示例代码
const Koa = require("koa");
const app = new Koa();
const bodyParser = require("koa-bodyparser");
// 使用ctx.body解析中间件
app.use(bodyParser());
app.use(async (ctx) => {
if (ctx.url === "/" && ctx.method === "GET") {
// 当GET请求时候返回表单页面
let html = `
<h1>demo</h1>
<form method="POST" action="/">
<p>用户名</p>
<input name="userName" /><br/>
<p>昵称</p>
<input name="nickName" /><br/>
<p>邮箱</p>
<input name="email" /><br/>
<button type="submit">提交</button>
</form>
`;
ctx.body = html;
} else if (ctx.url === "/" && ctx.method === "POST") {
// 当POST请求的时候,中间件koa-bodyparser解析POST表单里的数据,并显示出来
let postData = ctx.request.body;
ctx.body = postData;
} else {
// 其他请求显示404
ctx.body = "<h1>404!!!/(ㄒoㄒ)/~~</h1>";
}
});
app.listen(3000);
执行程序
执行node index.js
然后访问 http://localhost:3000/
提交表单触发POST请求
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!