如何将查询参数添加到router.get

时间:2018-11-10 16:46:37

标签: node.js express

环境:普通技术堆栈

嗨,我想向router.get添加一个查询参数,但是我不确定如何定义它。

现在这样工作:

http://test.com/path1/path2/1

router.get('/path1/path2/:userId', (req, res) => {
    let route = `GET /path1/path2/${req.params.userId}`;

我只想添加一个搜索查询参数,是这样吗?

http://test.com/path1/path2/1?q=test

如何在router.get中定义它?

3 个答案:

答案 0 :(得分:1)

您不需要直接向路由添加查询参数。只需保留/path1/path2/:userId

在您的功能内,您可以通过req.query.q在此处检查是否存在query parameter

// http://test.com/path1/path2/1?q=test
router.get('/path1/path2/:userId', (req, res) => {
    let route = `GET /path1/path2/${req.params.userId}`;

    // If http://test.com/path1/path2/1, req.query.q is undefined
    console.log(req.params.userId, req.query.q);
});

答案 1 :(得分:1)

您使用req.query对象获取查询参数。

因此,对于URL http://test.com/path1/path2/1?q=test,您可以获取如下查询参数:

router.get('/path1/path2/:userId', (req, res) => {
    console.log(req.params.userId);        // "1"
    console.log(req.query.q);              // "test"
});

req.query的文档为here

答案 2 :(得分:1)

对于此网址@Override public void onPause() { super.onPause(); unregisterContentObserver(); } public void unregisterContentObserver() { if (mSmsObserver != null) { try { getActivity().getContentResolver().unregisterContentObserver(mSmsObserver); } catch (IllegalStateException ise) { Timber.w(ise.getMessage()); } finally { mSmsObserver = null; } } } @Override public void onResume() { super.onResume(); registerContentObserver(); } private void registerContentObserver() { mSmsObserver = new SMSObserver(getActivity(), new Handler(),this); getActivity().getContentResolver().registerContentObserver(Uri.parse("content://sms/inbox"), true, mSmsObserver);//To track an incoming SMS only }

访问路径参数= http://test.com/path1/path2/1?q=test

访问查询参数= req.params.userId

从Express文档中了解更多信息

http://expressjs.com/de/api.html#req.query

http://expressjs.com/de/api.html#req.params