1

考虑以下 Express 代码:

router.get('/v1/api/book/:id', function (req, res) {
  if (!req.params.id)
    res.status(401).send('Missing book id');
  res.status(200).send('Book found!');
});
  • 通过调用http://myserver/v1/api/book/12345689,应用程序按预期返回200 > Book found!
  • 但是,http://myserver/v1/api/book返回404 > Cannot GET /v1/api/book,而不是401 > Missing book id

您能否解释一下为什么以及如何解决这种行为?

4

2 回答 2

1

您必须声明id路径参数可选,否则路由将不匹配(有关更多信息,请参阅http://expressjs.com/en/guide/routing.html#route-parameters)。

你可以这样做:

router.get('/v1/api/book/:id?', function (req, res) { ... }
于 2019-05-12T15:35:02.220 回答
1
于 2019-05-12T15:39:07.120 回答