103 votes

Utilisation de plusieurs paramètres dans l'URL en express

J'utilise Express avec Node et j'ai une exigence dans laquelle l'utilisateur peut demander l'URL comme : http://myhost/fruit/apple/red .

Une telle demande renverra une réponse JSON.

Les données JSON, avant l'appel ci-dessus, ressemblent à ceci :

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

Avec la demande ci-dessus, les données JSON de la réponse devraient être :

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

J'ai configuré express pour acheminer comme suit :

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*/
    });  

Mais cela ne fonctionne pas. Je ne sais pas comment passer plusieurs paramètres, c'est-à-dire que je ne suis pas sûr si /fruit/:fruitName/:fruitColor est la bonne façon de procéder. L'est-elle ?

179voto

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

    send.json(data);
});

Si cela ne fonctionne pas, essayez d'utiliser console.log(req.params) pour voir ce qu'il vous donne.

43voto

Bandito11 Points 875

Pour ce que tu veux, j'aurais utilisé

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

ou mieux encore

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

où le fruit est un objet. Ainsi, dans l'application cliente, il suffit d'appeler

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

et comme réponse, vous devriez voir :

    //  client side response
    // { name: My fruit name, color:The color of the fruit}

7voto

MD SHAYON Points 93

Les deux façons sont correctes, vous pouvez les utiliser toutes. Première méthode

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

Une autre façon d'utiliser le symbole &

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X