刚入node.js的坑,问个express的链接地址参数匹配的问题:
我有如下/play/key?secret=xxxxx
/play/key&secret=xxxxx
的地址,如何分别匹配到key和secret的值?第一种情况已经解决,key用req.params[0]
取得,secret用req.query.secret
,关键第二种情况如何实现?求方法。。。必须要用正则么?
//匹配仅一项结果
function matchOnly(pattern,str) {
var matches = pattern.exec(str);
return matches[1]?matches[1]:'';
}
var url = '/play/key&secret=xxxxx';
var p_key = /play\/(.*?)&/; //正则式 获取key
var key = matchOnly(p_key,url);
var p_secret = /play\/.*?&secret=(.*?)(?:&|$)/; //正则式 获取secret
var secret = matchOnly(p_secret,url);
用什么方法都行,这里是用正则式,你也可以用字符串的处理函数,都可以,也不要太纠结express到底有么有提供直接获取的方法,即便有,它也是在这样处理字符串。
当然,有很多插件可以用的 body-parser
我是用这个插件,之后你就可以 req.body.secret
,用这种键值的方式访问了。。。