res.end()finalizará o processo de resposta. Na verdade, esse método vem do núcleo do nó, especificamente do response.end()método de http.ServerResponse. É usado para finalizar rapidamente a resposta sem nenhum dado. Por exemplo:
Mas res.end pode realmente agir como res.send, pois você pode passar um argumento de string para adicionar como o corpo da resposta. Além disso, res.send também encerra a resposta. Então, como eles são funcionalmente diferentes?
saltthehash
31
@ psytech140 O Jmar77 teve uma boa resposta aqui : "Se você passar uma string para res.send (), ela automaticamente assume um tipo de conteúdo de html. res.end (), no entanto, simplesmente chama a implementação end () subjacente do nó no diretório fluxo de resposta, portanto, nenhuma suposição é feita para o Tipo de conteúdo ".
precisa saber é o seguinte
Tive que votar isso puramente porque eu nunca usei, expressmas pelo título pensei - alguém envia algo, termina algo ... 'está certo.
Darren Bartrup-Cook
Mas e se você apenas usar res.send()com nada. Isso funciona assim res.end()?
Eu gostaria de enfatizar um pouco mais algumas diferenças importantes entre res.end()e res.send()com relação aos cabeçalhos de resposta e por que eles são importantes.
1. res.send () verificará a estrutura da sua saída e definirá as informações do cabeçalho de acordo.
¿Por que essa tag é importante?
O cabeçalho de resposta HTTP ETag é um identificador para uma versão específica de um recurso. Ele permite que os caches sejam mais eficientes e economiza largura de banda, pois um servidor da web não precisa enviar uma resposta completa se o conteúdo não foi alterado.
Esta resposta deve ser aceita na minha opinião ... mais ênfase é feita nas diferenças reais que podem arruinar o seu dia de trabalho, em vez de discutir como encerrar a resposta com / sem conteúdo ...
Tomas
13
o que res.send () faz é implementar res.write , res.setHeaders e res.end .
verifica quais são os dados que você envia e define os cabeçalhos corretos,
em seguida, transmite os dados com res.write e, no final, usa res.end para definir o final da solicitação.
Em alguns casos, você desejará fazê-lo manualmente, por exemplo, se quiser transmitir um arquivo ou um conjunto de dados grande; nesses casos, você desejará definir os cabeçalhos por conta própria e usar o res.write para manter o fluxo fluxo.
resé um objeto HttpResponse que se estende de OutgoingMessage. res.sendchamadas res.endimplementadas pelo OutgoingMessage para enviar resposta HTTP e fechar conexão. Vemos código aqui
res.end
usado por nó simples onde, comores.send
é usado por framwork expressaRespostas:
res.send()
enviará a resposta HTTP. Sua sintaxe é,O parâmetro body pode ser um objeto Buffer, uma String, um objeto ou uma Matriz. Por exemplo:
Veja isso para mais informações.
res.end()
finalizará o processo de resposta. Na verdade, esse método vem do núcleo do nó, especificamente doresponse.end()
método dehttp.ServerResponse
. É usado para finalizar rapidamente a resposta sem nenhum dado. Por exemplo:Leia isto para mais informações.
fonte
express
mas pelo título pensei - alguém envia algo, termina algo ... 'está certo.res.send()
com nada. Isso funciona assimres.end()
?Eu gostaria de enfatizar um pouco mais algumas diferenças importantes entre
res.end()
eres.send()
com relação aos cabeçalhos de resposta e por que eles são importantes.1. res.send () verificará a estrutura da sua saída e definirá as informações do cabeçalho de acordo.
Onde com res.end () você pode responder apenas com texto e ele não define " Tipo de conteúdo "
2. res.send () definirá o atributo "ETag" no cabeçalho da resposta
¿Por que essa tag é importante?
O cabeçalho de resposta HTTP ETag é um identificador para uma versão específica de um recurso. Ele permite que os caches sejam mais eficientes e economiza largura de banda, pois um servidor da web não precisa enviar uma resposta completa se o conteúdo não foi alterado.
res.end()
NÃO definirá este atributo de cabeçalhofonte
o que res.send () faz é implementar res.write , res.setHeaders e res.end .
verifica quais são os dados que você envia e define os cabeçalhos corretos,
em seguida, transmite os dados com res.write e, no final, usa res.end para definir o final da solicitação.
Em alguns casos, você desejará fazê-lo manualmente, por exemplo, se quiser transmitir um arquivo ou um conjunto de dados grande; nesses casos, você desejará definir os cabeçalhos por conta própria e usar o res.write para manter o fluxo fluxo.
fonte
res
é um objeto HttpResponse que se estende de OutgoingMessage.res.send
chamadasres.end
implementadas pelo OutgoingMessage para enviar resposta HTTP e fechar conexão. Vemos código aquifonte