web-dev-qa-db-fra.com

Utilisation de plusieurs paramètres dans une URL dans Express

J'utilise Express avec Node et j'ai une exigence selon laquelle l'utilisateur peut demander l'URL sous la forme: http://myhost/fruit/Apple/red.

Une telle demande retournera une réponse JSON.

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

{
    "fruit": {
        "Apple": "foo"
    }
}  

Avec la requête ci-dessus, les données JSON de réponse doivent être:

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

J'ai configuré Express pour router 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 ça ne marche pas. Je ne sais pas comment passer plusieurs paramètres, autrement dit, je ne sais pas si /fruit/:fruitName/:fruitColor est la bonne façon de faire cela. Est ce

55
callmekatootie
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.

106
chovy

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. Donc, dans l'application client, vous appelez simplement

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

et en réponse, vous devriez voir:

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