2013-02-28 15 views
30

私はノードでExpressを使用していますが、ユーザがURLを要求できる要件はhttp://myhost/fruit/apple/redです。エクスプレスでURLに複数のパラメータを使用する

このようなリクエストはJSON応答を返します。

JSONデータ、上記の呼び出しがどのように見えるの前に:上記のリクエストで

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

、レスポンスJSONデータは次のようになります。私はルートに明示設定している

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

次のように:

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がこれを行う正しい方法であるかどうかはわかりません。それは...ですか?

答えて

67
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)を使用して、その内容を確認してみてください。あなたは、私は果物が対象で、まだ

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

を使用しただろう欲しいもののために

+0

あなたはこのようなものが可能であるか知っていますか? '/ fruit /:fruitName/vegetable /:vegetableName'' – MadPhysicist

+2

が確実です。単に 'req.params.fruitName'と' req.params.vegetableName'を実行します。 – chovy

+0

これは動作しますが、静的リソースは '/ fruit'のように'/fruit/js/main.js'私の 'public/js/main.js'は私の静的ファイルフォルダです。 – loretoparisi

3

。だから、クライアントアプリであなただけの

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} 
+0

これはうまくいくように見えますが、後でparamsを追加すると拡張性が向上します。 JSON.stringをクライアント側で作成し、ルーティングでサーバー上にURLとJSON.parseを作成しました。 – james

+0

ああ、あなたは正しいです。 JSONの.parseと.stringifyを私の提案された答えに追加するのを忘れてしまったが、オブジェクトをパラメータとして渡すときも同じことをするので、正しい形式のオブジェクトを文字列として渡していると確信している。 – Bandito11

関連する問題