89

我将 Express 与 Node 一起使用,并且我有一个要求,用户可以将 URL 请求为:http://myhost/fruit/apple/red.

这样的请求将返回 JSON 响应。

上述调用之前的 JSON 数据如下所示:

{
    "fruit": {
        "apple": "foo"
    }
}  

对于上述请求,响应 JSON 数据应为:

{
    "apple": "foo",
    "color": "red"
}

我已将 express 配置为路由如下:

app.get('/fruit/:fruitName/:fruitColor', function(request, response) {
    /*return the response JSON data as above using request.params.fruitName and 
request.params.fruitColor to fetch the fruit apple and update its color to red*/
    });  

但这不起作用。我不确定如何传递多个参数,也就是说,我不确定/fruit/:fruitName/:fruitColor这样做是否正确。是吗?

4

3 回答 3

154
app.get('/fruit/:fruitName/:fruitColor', function(req, res) {
    var data = {
        "fruit": {
            "apple": req.params.fruitName,
            "color": req.params.fruitColor
        }
    }; 

    send.json(data);
});

如果这不起作用,请尝试使用 console.log(req.params) 看看它给了你什么。

于 2013-02-28T06:37:37.253 回答
35

对于你想要的,我会用

    app.get('/fruit/:fruitName&:fruitColor', function(request, response) {
       const name = request.params.fruitName 
       const color = request.params.fruitColor 
    });

或者更好

    app.get('/fruit/:fruit', function(request, response) {
       const fruit = request.params.fruit
       console.log(fruit)
    });

水果是一个对象。因此,在客户端应用程序中,您只需调用

https://mydomain.dm/fruit/{"name":"My fruit name", "color":"The color of the fruit"}

作为回应,您应该看到:

    //  client side response
    // { name: My fruit name, color:The color of the fruit}
于 2017-09-14T03:23:28.073 回答
3

两种方式都是正确的,您可以使用其中任何一种方式

app.get('/fruit/:one/:two', function(req, res) {
    console.log(req.params.one, req.params.two)
});

使用 & 符号的另一种方式

app.get('/fruit/:one&:two', function(req, res) {
    console.log(req.params.one, req.params.two)
});
于 2021-08-21T11:07:50.937 回答