¿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?
201
¿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?
Respuestas:
Los métodos son idénticos cuando se pasa un objeto o matriz, pero
res.json()
también convertirán objetos que no son, comonull
yundefined
, que no son JSON válidos.El método también utiliza la configuración de la aplicación
json replacer
yjson spaces
, por lo que puede formatear JSON con más opciones. Esas opciones se configuran así:Y pasó a algo
JSON.stringify()
así:Este es el código en el
res.json()
método que el método de envío no tiene:El método termina como
res.send()
a al final:fuente
https://github.com/visionmedia/express/blob/ee228f7aea6448cf85cc052697f8d831dce785d5/lib/response.js#L174
res.json
finalmente llamares.send
, pero antes de eso:json spaces
yjson replacer
configuración de aplicacionesfuente
Buscando en los encabezados enviados ...
res.send usa content-type: text / html
res.json usa content-type: application / json
fuente
res.json
fuerza el argumento a JSON.res.send
tomará un objeto o matriz que no sea json y enviará otro tipo. Por ejemplo:Esto devolverá un número JSON.
Esto devolverá un código de estado y emitirá una advertencia para usar sendStatus.
Si su argumento no es un objeto o matriz JSON (nulo, indefinido, booleano, cadena) y desea asegurarse de que se envíe como JSON, use
res.json
.fuente