Node.js-expressでres.json()とres.send()
4849 ワード
1、res.json([body])はjsonの応答を送信する.この方法は,1つのオブジェクトまたは1つの配列をパラメータとしてres.send()メソッドに渡す効果と同じである.ただし、null、undefinedなどの他の値をjsonに変換するには、この方法を使用します.(これらはいずれも技術的に無効なJSONですが).
2、res.send([body])はHTTP応答を送信する.bodyパラメータは、Bufferオブジェクト、文字列、オブジェクト、または配列です.例:
一般的な非ストリーム要求に対して、この方法は多くの有用なタスクを実行することができる:例えば、以前に定義されていない限り、Content-LengthHTTP応答ヘッダに自動的に値を付与し、自動的なHEADおよびHTTPキャッシュ更新もサポートする.
パラメータがBufferオブジェクトの場合、このメソッドは、次のように事前に指定しない限り、Content-Type応答ヘッダをアプリケーション/octet-streamに設定します.
パラメータが文字列の場合、このメソッドはContent-Type応答ヘッダをtext/htmlに設定します.
パラメータがオブジェクトまたは配列の場合、ExpressはJSON形式で表されます.
3、res.send()とres.json()の違い
オブジェクトまたは配列を渡す場合、この2つの方法は同じですが、res.json()はnullやundefinedなどの非オブジェクトを変換し、これらの無効なJSONも変換します.
この方法では、json replaceacerとjson spacesの設定も使用するので、より多くのオプションを使用してJSONをフォーマットできます.例:
JSONに渡すstringify()類似:
res.jsonメソッドのres.sendセクションにないコード:
最終的にはres.sendを使用してリクエストを送信します
res.json(null);
res.json({user:'tobi'});
res.status(500).json({error:'message'});
2、res.send([body])はHTTP応答を送信する.bodyパラメータは、Bufferオブジェクト、文字列、オブジェクト、または配列です.例:
res.send(new Buffer('whoop'));
res.send({some:'json'});
res.send('some html
');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
一般的な非ストリーム要求に対して、この方法は多くの有用なタスクを実行することができる:例えば、以前に定義されていない限り、Content-LengthHTTP応答ヘッダに自動的に値を付与し、自動的なHEADおよびHTTPキャッシュ更新もサポートする.
パラメータがBufferオブジェクトの場合、このメソッドは、次のように事前に指定しない限り、Content-Type応答ヘッダをアプリケーション/octet-streamに設定します.
res.set('Content-Type', 'text/html');
res.send(new Buffer('some html'));
パラメータが文字列の場合、このメソッドはContent-Type応答ヘッダをtext/htmlに設定します.
res.send('some html');
パラメータがオブジェクトまたは配列の場合、ExpressはJSON形式で表されます.
res.send({user:'tobi'});
res.send([1, 2, 3]);
3、res.send()とres.json()の違い
オブジェクトまたは配列を渡す場合、この2つの方法は同じですが、res.json()はnullやundefinedなどの非オブジェクトを変換し、これらの無効なJSONも変換します.
この方法では、json replaceacerとjson spacesの設定も使用するので、より多くのオプションを使用してJSONをフォーマットできます.例:
app.set('json spaces', 2);
app.set('json replacer', replacer);
JSONに渡すstringify()類似:
JSON.stringify(value, replacer, spacing);
// value:
// replacer: stringify
// spacing:
res.jsonメソッドのres.sendセクションにないコード:
var app = this.app;
var replacer = app.get('json replacer');
var spaces = app.get('json spaces');
var body = JSON.stringify(obj, replacer, spaces);
最終的にはres.sendを使用してリクエストを送信します
this.charset = this.charset || 'utf-8';
this.get('Content-Type') || this.set('Content-Type', 'application/json');
return this.send(body);