Soy un principiante Express.js
y estoy confundido por estas dos palabras clave: res.end()
y res.send()
.
¿Son iguales o diferentes?
Soy un principiante Express.js
y estoy confundido por estas dos palabras clave: res.end()
y res.send()
.
¿Son iguales o diferentes?
Respuestas:
res.send()
enviará la respuesta HTTP. Su sintaxis es,
res.send([body])
El parámetro body puede ser un objeto Buffer, una cadena, un objeto o una matriz. Por ejemplo:
res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
Vea esto para más información.
res.end()
finalizará el proceso de respuesta. Este método en realidad proviene del núcleo del nodo, específicamente el response.end()
método de http.ServerResponse
. Se utiliza para finalizar rápidamente la respuesta sin ningún dato. Por ejemplo:
res.end();
res.status(404).end();
Lea esto para más información.
express
pero por el pensamiento del título: uno envía algo, uno termina algo ... era correcto.
res.send()
sin nada? ¿Esto actúa como res.end()
?
Me gustaría hacer un poco más de énfasis en algunas diferencias clave entre res.end()
y res.send()
con respecto a los encabezados de respuesta y por qué son importantes.
1. res.send () verificará la estructura de su salida y establecerá la información del encabezado en consecuencia.
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
Donde con res.end () solo puede responder con texto y no establecerá " Content-Type "
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send () establecerá el atributo "ETag" en el encabezado de respuesta
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
¿Por qué es importante esta etiqueta?
El encabezado de respuesta HTTP ETag es un identificador para una versión específica de un recurso. Permite que los cachés sean más eficientes y ahorra ancho de banda, ya que un servidor web no necesita enviar una respuesta completa si el contenido no ha cambiado.
res.end()
NO establecerá este atributo de encabezado
lo que res.send () hace es implementar res.write , res.setHeaders y res.end .
comprueba los datos que envía y establece los encabezados correctos,
luego transmite los datos con res.write, y al final usa res.end para establecer el final de la solicitud.
Hay algunos casos en los que querrá hacerlo manualmente, por ejemplo, si desea transmitir un archivo o un gran conjunto de datos, en este caso, querrá configurar los encabezados por su cuenta y usar res.write para mantener la transmisión fluir.
res.end
usado por nodo simple donderes.send
es usado por framwork express