这节课讨论查询字符串(query string)。
什么是查询字符串?查询字符串是一种以键值对形式附加于 http 请求的数据,常见于博客分页,用于指示当前浏览页属于第几页 /blog/news?page=2
,如下图
构造查询字符串的方式
- 在
url
后,以?
打头 - 键值对:
key=value
的形式 - 多对键值对通过
&
分割:key1=value1&key2=value2
- 最终格式:
http://xxx.com/blog/news?key1=value1&key2=value2
如果我们发起一个带有额外数据(查询字符串)的请求,服务端应用中我们需要获取该请求并抽取这份额外的数据。
以前面的 /contact
为例,该请求可以通过查询字符串的形式带上联系人
与联系人所属部门的信息
express 中通过 request 对象的 query
属性进行获取查询字符串
app.get('/contact', function(req, resp){
console.log(req.query); // {person:'ryu',department:'software'}
});
然后就可以将从请求拿到的查询字符串数据放到 ejs 里面进行渲染,这样子 contact 的表单就可以默认带上请求上查询字符串的数据了。
app.get('/contact', function(req, resp){
resp.render('contact.ejs', {
qs: req.query
});
});
'contact.ejs'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>contact</title>
</head>
<body>
<form>
<label>
Person
<input type="text" value="<%= qs.person%>">
</label>
<label>
department
<input type="text" value="<%= qs.department%>">
</label>
</form>
</body>
</html>
网友评论