node.js - express 默认路由参数

标签 node.js express routes

我很惊讶我找不到这个,所以它之前可能已经回答过(而且我正在搜索错误的东西)。

基本上,是否可能以及如何在 nodejs 快速路由上设置默认值?

// Test route
router.route('/tests/:id')
    .get(testsController.tests.get);

如果未设置:id,它将自动设置为任意值,例如1.

Controller 代码:

var testsController = {
    tests: {
        get: function (req, res, next) {
            if (req.params.id) {
                res.render('tests.html', { title: 'The Site', id: req.params.id });
                next();
            } else {
                //res.redirect('/')
                console.log('here');
            }
        }
    }
};

我知道在 PHP Symfony2 中我可以做这样的事情:

/**
 * @Route("/tests/{id}")
 * @param Request $request
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function testAction(Request $request, $id=1)
{
}

最佳答案

您设置正确,但之后您需要从请求对象中获取参数,它不会自动传递给操作:

req.params.id

[编辑] 要使参数可选,您应该像这样定义路由:

router.route('/tests/:id?')
    .get(testsController.tests.get);

如果您想设置默认值,请执行以下操作:

res.render('tests.html', { title: 'The Site', id: req.params.id || 1 });

关于node.js - express 默认路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136788/

相关文章:

node.js - 我们如何使用 jenkins 和 nodejs 设置并行运行测试?

laravel - Laravel 5如何验证路由参数?

node.js - 如何在具有 reactstrap 依赖项的 reactjs 应用程序中自定义 bootstrap 4?

xml - 如何将身份验证 header 传递给node-soap

node.js - 在 Node api 中配置 socket.io

routes - Cypress URL 匹配查询

php - 告诉 zend router 为每个 url 添加前缀

javascript - gulp 观察者和 promise 导致崩溃

javascript - 如何解析大数据?

javascript - NodeJS URL 路由和渲染 HTML