新手请教,关于Express查询字符串的路由方法
发布于 8 年前 作者 dcclogin 3431 次浏览 来自 问答

我在之前没有接触过PHP,用过Django写简单的静态Web应用,目前有项目需要实现搜索功能,用Express来实现。 我想要用户在搜索框中输入内容后提交POST请求之后路由到类似/search?keyword=xxx的带查询字符串的URL上, 一开始尝试post之后res.redirect(),然后再写一个接受这个redirect的get请求路由,用正则表达式/s\?wd=.+/ 好像不太行,有没有什么方法能实现这样的功能,或者说这么做有没有必要?谢谢


不好意思,刚知道实际上query string不是路由的一部分,那么当我们在搜索引擎的搜索框输入内容之后post,浏览器的URL显示bar会有query string如下图 Screenshot from 2017-03-30 00-17-33.png 这样的效果在node express等web框架中如何简单地实现呢?

以下是失败的尝试代码:

/* form in home page 首次搜索 */
router.post('/', function(req, res, next) {
		var q = req.body.query; //HTML代码input标签对应的name属性是query
		res.redirect('/s?wd='+q.replace(/ /g,'+'));
});
/* 第二次以后的搜索 */
router.post(/s\?wd=.*/, function(req, res, next) {
        var q = req.body.query;
        console.log(query);
        res.redirect('/s?wd='+q.replace(/ /g,'+'));
});
/* get接收前面写的redirect()做渲染等工作 */
router.get(/s\?wd=.*/, function(req, res, next) {
        var query = req.query.wd;
        console.log(query);
        res.render('search', {q: query});
});

经过几番相关资料的查询和自己的理解,一般搜索的实现是一个get请求而不是post,也就是说可以先设置好具体词条的路由,然后在首页用ajax发get请求去请求搜索框内输入的词条,然后渲染页面 - -

6 回复

req.query.keyword ?楼主要这个?

来自酷炫的 CNodeMD

@dbit-xia 你好兄弟,多谢回答,不过req.query.keyword是我已经有了含查询字符串URL去解析的时候用的呢,我现在想知道怎么通过post数据生成含有query string的URL,就像Screenshot from 2017-03-30 00-17-33.png这样的

我猜你需要querystring模块

来自酷炫的 CNodeMD

回到顶部