Qual é a diferença real entre res.send
e res.json
como ambos parecem executar a mesma operação de resposta ao cliente.
200
Qual é a diferença real entre res.send
e res.json
como ambos parecem executar a mesma operação de resposta ao cliente.
Respostas:
Os métodos são idênticos quando um objeto ou matriz é passado, mas
res.json()
também convertem não-objetos, comonull
eundefined
, que não são JSON válidos.O método também usa as configurações de aplicativo
json replacer
ejson spaces
, para que você possa formatar o JSON com mais opções. Essas opções são definidas assim:E passou para um
JSON.stringify()
assim:Este é o código no
res.json()
método que o método send não possui:O método acaba como um
res.send()
no final:fonte
https://github.com/visionmedia/express/blob/ee228f7aea6448cf85cc052697f8d831dce785d5/lib/response.js#L174
res.json
eventualmente chamares.send
, mas antes disso:json spaces
ejson replacer
aplicativosfonte
Procurando nos cabeçalhos enviados ...
res.send usa o tipo de conteúdo: text / html
res.json usa o tipo de conteúdo: application / json
fonte
res.json
força o argumento para JSON.res.send
pegará um objeto ou matriz não json e enviará outro tipo. Por exemplo:Isso retornará um número JSON.
Isso retornará um código de status e emitirá um aviso para usar o sendStatus.
Se o seu argumento não for um objeto ou matriz JSON (nulo, indefinido, booleano, sequência de caracteres) e você deseja garantir que ele seja enviado como JSON, use
res.json
.fonte