2013-09-27 8 views
154

Was ist der tatsächliche Unterschied zwischen res.send und res.json als beide scheinen die gleiche Operation der Antwort auf den Client durchzuführen.Unterschied zwischen res.send und res.json in Express.js

+58

einen Moment Zeit nehmen, zu sehen, wie die Leute Entsendung Antworten gingen nur GitHub und den Quellcode zu lesen. Das ist eine gute Gewohnheit zu lernen und zu etablieren. Die Wahrheit liegt in der Quelle. –

+7

@PeterLyons Verwenden Sie die Quelle, Luke! – wprl

+24

@PeterLyons Ich stimme zu, dass dies eine gute Angewohnheit ist, aber meintest du, dass Widder sich die Quelle angesehen haben sollte, anstatt die Frage zu stellen? Schadet das nicht dem Zweck dieser Seite? Das Vorhandensein dieser Frage mit Antworten auf eine gute Quelle (Die Quelle!) Ist nützlich. – LinusR

Antwort

168

Die Methoden sind identisch, wenn ein Objekt oder Array übergeben wird, aber res.json() konvertiert auch Nicht-Objekte, wie null und undefined, die keine gültigen JSON sind. Die Methode verwendet auch die Anwendungseinstellungen json replacer und json spaces, sodass Sie JSON mit weiteren Optionen formatieren können. Diese Optionen sind wie so gesetzt:

app.set('json spaces', 2); 
app.set('json replacer', replacer); 

und zu einem JSON.stringify() etwa so:

JSON.stringify(value, replacer, spacing); 
// value: object to format 
// replacer: rules for transforming properties encountered during stringifying 
// spacing: the number of spaces for indentation 

Dies ist der Code in der res.json() Methode, die die Sendemethode nicht hat:

var app = this.app; 
var replacer = app.get('json replacer'); 
var spaces = app.get('json spaces'); 
var body = JSON.stringify(obj, replacer, spaces); 

Die Methode endet als res.send() am Ende:

6

Suchen in den Kopfzeilen gesendet ...
res.send verwendet Content-Type: text/html
res.json verwendet Content-Type: application/json