Express関数の「res」および「req」パラメーターとは何ですか?


183

次のExpress関数で:

app.get('/user/:id', function(req, res){
    res.send('user' + req.params.id);
});

何であるreqres?彼らは何を表し、何を意味し、何をするのでしょうか?

ありがとう!


1
req== "request"// res=="response"
nilon

回答:


270

reqイベントを発生させたHTTPリクエストに関する情報を含むオブジェクトです。への応答としてreqres目的のHTTP応答を返信するために使用します。

これらのパラメーターには任意の名前を付けることができます。より明確であれば、そのコードを次のように変更できます。

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

編集:

あなたがこの方法を持っているとしましょう:

app.get('/people.json', function(request, response) { });

リクエストは次のようなプロパティを持つオブジェクトになります(ほんの数例を挙げると)。

  • request.url"/people.json"この特定のアクションがトリガーされたとき
  • request.method、これは"GET"この場合であるため、app.get()呼び出しです。
  • のHTTPヘッダーの配列。のrequest.headersような項目が含まれてrequest.headers.acceptいます。これを使用して、要求を行ったブラウザの種類、処理できる応答の種類、HTTP圧縮を理解できるかどうかなどを決定できます。
  • 存在する場合、クエリ文字列パラメータの配列request.query(たとえば、文字列を含む/people.json?foo=bar結果にrequest.query.fooなります"bar")。

その要求に応答するには、応答オブジェクトを使用して応答を作成します。people.json例を拡張するには:

app.get('/people.json', function(request, response) {
  // We want to set the content-type header so that the browser understands
  //  the content of the response.
  response.contentType('application/json');

  // Normally, the data is fetched from a database, but we can cheat:
  var people = [
    { name: 'Dave', location: 'Atlanta' },
    { name: 'Santa Claus', location: 'North Pole' },
    { name: 'Man in the Moon', location: 'The Moon' }
  ];

  // Since the request is for a JSON representation of the people, we
  //  should JSON serialize them. The built-in JSON.stringify() function
  //  does that.
  var peopleJSON = JSON.stringify(people);

  // Now, we can use the response object's send method to push that string
  //  of people JSON back to the browser in response to this request:
  response.send(peopleJSON);
});

1
curlを使用して、ヘッダー付きの応答を確認できます
Generalhenry

3
あなたがチェックアウトしたいかもしれません:en.wikipedia.org/wiki/Hypertext_Transfer_Protocol。むちゃくちゃじゃなくて、ウェブのために開発している私たち全員が知っておくべきことです。
TK-421

7
はい、これは素晴らしいものでした。express.jsWebサイトのメインページにあるはずです。
アントン

expressnoob-レスポンスはリクエストオブジェクトと同じようにオブジェクトですが、レスポンスに関連するフィールドとメソッドが含まれています。通常、応答のsend()メソッドが使用されます。send()は、最初の引数としてさまざまなタイプのまとまり全体を受け入れます。これはHTTP応答本体となり、2番目の引数はHTTP応答コードです。
grantwparks 2012

7
誰かが詳細reqres構造を探している場合、それはエクスプレスドキュメントで説明されていreqます::expressjs.com/en/api.html#reqresexpressjs.com/en/api.html#res
akn

25

Dave Wardの回答に1つのエラーがあったことに気づきました(おそらく最近の変更ですか?):クエリ文字列パラメーターは、request.queryではなくにありrequest.paramsます。(https://stackoverflow.com/a/6913287/166530を参照)

request.params デフォルトでは、ルート内の「コンポーネントの一致」の値が入力されます。

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

app.use(express.bodyParser());また、POSTされたformdataでもbodyparser()を使用するようにexpressを設定している場合。(POSTクエリパラメータを取得する方法を参照してください


6

リクエストとレスポンス。

を理解するにはreq、試してくださいconsole.log(req);


3
これは役に立ちません。コンソールの出力は[object Object]です。
JEC

jsonが必要な場合:console.log(JSON.Stringify(req.body);
maridob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.