我要路由2个不同的请求。
/api/heroes/:id
/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) {
如何更改代码,以便第二个手柄可以工作?
答案 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) {