带有/的快速路线

时间:2018-10-30 04:50:19

标签: node.js express

我要路由2个不同的请求。

  1. /api/heroes/:id
  2. /api/heroes/?name=

因此,使用nodejs并表达我编写服务器来处理此请求。 为了处理第一个请求,我编写了以下代码:

app.get('/api/heroes/:id', jsonParser, function (req, res) {

为处理第二个请求,我编写如下:

app.get('/api/heroes/name', jsonParser, function (req, res) {

但是只有第一个手柄可以正常工作。第二个请求由以下方式处理:

app.get('/api/heroes', jsonParser, function (req, res) {

如何更改代码,以便第二个手柄可以工作?

2 个答案:

答案 0 :(得分:3)

如果我正确地回答了您的问题,那么您可能会问为什么/api/heroes/?name=处理/api/heroes的要求。

您正在尝试在第二个请求中发送查询字符串参数,该参数将由路由/api/heroes处理。您将在req.query对象中获得查询字符串参数。

因此,您的第一个请求处理程序将适用于网址-/api/heroes/:id(例如-/ api / heroes / 123),如下所示:

app.get('/api/heroes/:id', function (req, res) {
  var id = req.param.id
}

并针对第二个要求:/api/heroes?name=(例如-/ api / heroes?name = abc)

app.get('/api/heroes', function (req, res) {
  var name = req.query.name
}

在此处req.query

答案 1 :(得分:2)

这是预期的结果:

对于查询参数/api/heroes/?name=

处理
app.get('/api/heroes', jsonParser, function (req, res) {

您可以做的是检查req.query.name是否为undefined,然后按正常操作或对查询进行操作。使用if...else条件。

  

/api/heroes/name是带有name的端点。

如果需要,您可以区分以下内容:

app.get('/api/heroes/name/:text', jsonParser, function (req, res) {