2016-09-27 21 views
2

質問:「res.json(false);」というコードは何ですか?やっている?私は欲しいデータを表示するのではなく、ページにfalseを表示しませんか?サーバーパスにコロンと疑問符を含むメソッドを取得する

次のサンプルコードを見ています。私は.get(がメソッドであり、/:characters?がサーバーパスであることを理解しています。この検索で​​は、コロンのポイントとパスの疑問符は何ですか?それはクエリーなので、疑問符は文字の前に来るべきではありませんか?

app.get('/:characters?', function (req, res) { 
    var chosen = req.params.characters; 

    if (chosen) { 
     console.log(chosen); 

     for (var i = 0; i < characters.length; i++) { 
      if (chosen === characters[i].routeName) { 
       res.json(characters[i]); 
       return; 
      } 
     } 

     res.json(false); 
    } else { 
     res.json(characters); 
    } 
}); 
+1

[エクスプレスルートAPIで名前付きパラメータを追加する](http://stackoverflow.com/questions/24804458/adding-named-parameters-in-express-route-api)の可能な複製 –

答えて

1

:charactersは実際にはクエリ文字列の一部ではありません。それはURLの一部になります。

URLは(あなたがローカルでこのサーバを実行していると仮定すると、ポート8080に)次のようなものになります。

http://localhost:8080/abcdefg

そして、その場合には、req.params.characters'abcdefg'

置くだろう私の意見では、ルート定義の明示的な疑問符は間違いです。私はその疑問符がどのような目的のために役立つのかは完全にはわかりません。

フォローアップの質問については、変数(これは外部定義されていると仮定します)内の一致をcharacters[i].routeNameで探して、見つかった値を返します。値が見つからない場合は、falseを返信します(または、が有効なJSONであるとは確信していないため、res.json(false)を使用しようとすると、明示的に何をするのか分かりません)。

0

これは、エンドポイントまたはリソースが

を意味変数を含めることができ、通常のケースでは、あなたがMarkZukerbergのタイムラインを見た場合、エンドポイントまたはURLが

https://www.facebook.com/zuck 
あるので、例えばFacebookのを取ることができます

あなた自身のプロフィールが表示されたら、そのzuckはあなたの名前に置き換えられます。ここでnameパラメータは変数です。変数はURLの一部で、これまで我々は急行構文でコロン記号

であることの前に、我々はクエリパラメータとして、いくつかの他の値を送信する場合は、次に我々が使用

?マークは、次の文字列は、クエリパラメータとして使用するサーバーを指示する

?name=value&age=12&gender=male

そして

res.json(false) 

だけで、他の応答は何も

2

最も簡単な答えとしてfalseを返します:

:XXXは、そのURLパラメータを意味します。 (すなわち、req.params.XXXがXXXのものを受け取る)

?は、パラメータがオプションであることを意味します。 (すなわち、クライアント側のユーザーはにこのパラメータをURLに含めるにはを必要としません)。

ので:このルートをヒットする//yoda両方:

/:characters?はを可能にします。

4

この場合、疑問符はオプションのパラメータ「文字」を示します。これは、値を持つかどうかを示すエンドポイントを許可します。彼らは、それが含まれているかどうかを確認するために、そのパラメータに対してテストしています。そうであれば、それらは「文字」オブジェクトを反復し、一致するエントリをユーザが指定したエンドポイントに返す。

関連する問題