什么":op?"在网址路径中意味着什么?

时间:2014-07-01 16:20:30

标签: javascript express url-routing

查看一些Node.js Express代码,我看到了这个路由列表:

app.all('/user/:id/:op?', user.load);
app.get('/user/:id', user.view);
app.get('/user/:id/view', user.view);
app.get('/user/:id/edit', user.edit);
app.put('/user/:id/edit', user.update);

运行时,我注意到/user/:id的请求实际上已路由到user.load。对此我不熟悉,我很惊讶。

:op?在第一行中做了什么导致它捕获不太具体的路线?我无法在Express documentation中找到:op?的任何实例。

2 个答案:

答案 0 :(得分:2)

来自app.all的文档:

  

此方法对于映射" global"非常有用。的逻辑   特定路径前缀或任意匹配。

现在让我们来看看路由。

?中的问号app.all('/user/:id/:op?', user.load)表示路线中的参数:op(可被视为"操作" )可选的。

由于all方法调用放在其他路由调用之前,与路由/user/:id//user/:id/view/user/:id/edit匹配的所有内容都将首先通过{{1 }} 方法。值得一提的是,user.load作为参数很可能不会在:op中扮演任何特定角色,但在路线中扮演占位符。

这种方法很可能有助于在继续进行user.loadview操作之前检查数据库中是否存在实体。

另外,请记住@apsillers comment以及文档中引用的引文,edit方法可能会在回调结束时调用user.load,以便与其他路径一起进行匹配。

答案 1 :(得分:0)

我完全不知道这段代码是什么,或者代码是什么。

但我猜想,正如:id用于存放用户的ID一样,:op?将用于选择(?)占位 op < / i> eration(例如我们在其下面看到的viewedit