javascript - node - Diferencia entre res.send y res.json en Express.js
node express tutorial (3)
Buscando en los encabezados enviados ...
res.send usa content-type: text / html
res.json usa content-type: application / json
¿Cuál es la diferencia real entre res.send y res.json ya que ambos parecen realizar la misma operación de responder al cliente.
Los métodos son idénticos cuando se pasa un objeto o matriz, pero res.json() también convertirá no objetos, como null e undefined , que no son JSON válidos.
El método también usa los ajustes de la aplicación json replacer y json spaces , por lo que puede formatear JSON con más opciones. Esas opciones se establecen así:
app.set(''json spaces'', 2);
app.set(''json replacer'', replacer);
Y pasó a un JSON.stringify() como ese:
JSON.stringify(value, replacer, spacing);
// value: object to format
// replacer: rules for transforming properties encountered during stringifying
// spacing: the number of spaces for indentation
Este es el código en el método res.json() que el método de envío no tiene:
var app = this.app;
var replacer = app.get(''json replacer'');
var spaces = app.get(''json spaces'');
var body = JSON.stringify(obj, replacer, spaces);
El método termina como res.send() al final:
this.charset = this.charset || ''utf-8'';
this.get(''Content-Type'') || this.set(''Content-Type'', ''application/json'');
return this.send(body);
res.json finalmente llama a res.send , pero antes de eso:
- respeta los ajustes de la aplicación
json spacesyjson replacer - asegura que la respuesta tendrá utf8 charset y application / json content-type