我似乎无法在任何地方找到相关信息。
我希望能够做到这样的请求:url/list/message=hello?id=1234
但就像我说的那样,我无法在Express中找到关于如何执行此操作的任何信息。
我最初的猜测是这样做:
app.put('/list/message=:msg?id=:id', function (req, res) { ... });
但这不太有用。在Express中有没有办法做到这一点?
答案 0 :(得分:0)
您所指的通常称为查询字符串,我们在节点中有一个强大的URL解析库来处理这个问题。
试试这个:
require('url');
...
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
然后,如果您更改路线,则可以使用query.id
并获取1234
:
app.put('/list/message=:msg', function (req, res) { ... });
理想情况下,在尝试从中读取之前,应检查query.id
是否存在。我还建议不要使用message=:msg
。相反,我会将整个事情重写为
app.put('/list/:id', function (req, res) {
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
if (query.message) {...}
});
这与目前的结构略有不同,但更符合大量API处理路由的方式。
答案 1 :(得分:0)
你不能这样做。你能做的是:
app.put('/list/message/:msg', function (req, res) {
var msg = req.params.msg;
var url = require('url');
var id = url.parse(req.url, true).query.id;
});
您的网址将如下所示:url / list / message / hello?id = 1234