res.send
との実際の違いは何ですかres.json
。どちらもクライアントに応答するという同じ操作を実行しているようです。
質問する
143860 次
4 に答える
247
オブジェクトまたは配列が渡されるときのメソッドは同じですが、有効な JSON ではないやres.json()
などの非オブジェクトも変換します。null
undefined
このメソッドはjson replacer
およびjson spaces
アプリケーション設定も使用するため、より多くのオプションを使用して JSON をフォーマットできます。これらのオプションは次のように設定されます。
app.set('json spaces', 2);
app.set('json replacer', replacer);
JSON.stringify()
そして、次のように渡されました:
JSON.stringify(value, replacer, spacing);
// value: object to format
// replacer: rules for transforming properties encountered during stringifying
// spacing: the number of spaces for indentation
res.json()
これは、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);
于 2013-09-27T02:39:36.583 に答える
82
res.json
最終的に を呼び出しますがres.send
、その前に:
json spaces
とjson replacer
アプリの設定を尊重します- 応答に utf8 charset と application/json content-type があることを保証します
于 2013-09-27T02:41:51.617 に答える
21
送信されたヘッダーを調べます...
res.send は content-type:text/html
を使用します res.json は content-type:application/json を使用します
edit: send 実際には、指定された内容に基づいて送信される内容が変更されるため、文字列は text/html として送信されますが、オブジェクトを渡すと application/json を発行します。
于 2016-05-17T12:32:11.050 に答える