¿Cuál es la diferencia real entre res.sendy res.jsonya que ambos parecen realizar la misma operación de responder al cliente?
201
¿Cuál es la diferencia real entre res.sendy res.jsonya 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, comonullyundefined, que no son JSON válidos.El método también utiliza la configuración de la aplicación
json replaceryjson 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.jsonfinalmente llamares.send, pero antes de eso:json spacesyjson replacerconfiguración de aplicacionesfuente
Buscando en los encabezados enviados ...
res.send usa content-type: text / html
res.json usa content-type: application / json
fuente
res.jsonfuerza el argumento a JSON.res.sendtomará 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