1. ホーム
  2. node.js

[解決済み】Express関数のパラメータ "res "と "req "とは?

2022-04-22 14:12:17

質問

次のExpress関数で。

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

は何ですか? reqres ? これらは何を表し、何を意味し、何をするのか?

ありがとうございます。

解決方法は?

req は、イベントを発生させた HTTP リクエストの情報を含むオブジェクトです。 への応答として req を使用します。 res を使用して、希望する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);
});