Was ist der tatsächliche Unterschied zwischen res.send
und res.json
wie beide scheinen die gleiche Operation der Antwort auf den Client auszuführen.
Was ist der tatsächliche Unterschied zwischen res.send
und res.json
wie beide scheinen die gleiche Operation der Antwort auf den Client auszuführen.
Antworten:
Die Methoden sind identisch, wenn ein Objekt oder Array übergeben wird, res.json()
konvertieren jedoch auch Nichtobjekte wie null
und undefined
, die kein gültiges JSON sind.
Die Methode verwendet auch die Einstellungen json replacer
und und json spaces
, sodass Sie JSON mit mehr Optionen formatieren können. Diese Optionen sind wie folgt eingestellt:
app.set('json spaces', 2);
app.set('json replacer', replacer);
Und JSON.stringify()
so weitergereicht:
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, den 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 res.send()
am Ende als:
this.charset = this.charset || 'utf-8';
this.get('Content-Type') || this.set('Content-Type', 'application/json');
return this.send(body);
res.json
ruft schließlich an res.send
, aber vorher ist es:
json spaces
und json replacer
App-EinstellungenIn den gesendeten Headern
suchen ... res.send verwendet den Inhaltstyp: text / html
res.json verwendet den Inhaltstyp: application / json
res.json
erzwingt das Argument zu JSON. res.send
nimmt ein Nicht-JSON-Objekt oder -Array und sendet einen anderen Typ. Beispielsweise:
Dies gibt eine JSON-Nummer zurück.
res.json(100)
Dies gibt einen Statuscode zurück und gibt eine Warnung zur Verwendung von sendStatus aus.
res.send(100)
Wenn Ihr Argument kein JSON-Objekt oder -Array ist (null, undefiniert, boolesch, Zeichenfolge) und Sie sicherstellen möchten, dass es als JSON gesendet wird, verwenden Sie res.json
.