Was ist der tatsächliche Unterschied zwischen res.sendund res.jsonwie beide scheinen die gleiche Operation der Antwort auf den Client auszuführen.
Was ist der tatsächliche Unterschied zwischen res.sendund res.jsonwie 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 nullund undefined, die kein gültiges JSON sind.
Die Methode verwendet auch die Einstellungen json replacerund 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.jsonruft schließlich an res.send, aber vorher ist es:
json spacesund json replacerApp-EinstellungenIn den gesendeten Headern
suchen ... res.send verwendet den Inhaltstyp: text / html
res.json verwendet den Inhaltstyp: application / json
res.jsonerzwingt das Argument zu JSON. res.sendnimmt 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.