Saltar al contenido

¿Cuál es la diferencia entre res.send y res.write en express?

Solución:

res.send

  • res.send está solo en Express.js.
  • Realiza muchas tareas útiles para respuestas simples que no son de transmisión continua.
  • Capacidad para asignar automáticamente el Content-Length Campo de encabezado de respuesta HTTP.
  • Capacidad para proporcionar soporte automático de actualización de caché HEAD y HTTP.
  • Explicación práctica

    • res.send solo se puede llamar una vez, ya que es equivalente a res.write + res.end()
    • Ejemplo:
      app.get('/user/:id', function (req, res) {
          res.send('OK');
      });
      

Para más detalles:

  • Express.js: Respuesta

res.write

  • Se puede llamar varias veces para proporcionar partes sucesivas del cuerpo.
  • Ejemplo:
    response.write('<html>');
    response.write('<body>');
    response.write('<h1>Hello, World!</h1>');
    response.write('</body>');
    response.write('</html>');
    response.end();
    

Para más detalles:

  • response.write (fragmento[, encoding][, callback])
  • Anatomía de una transacción HTTP: envío del cuerpo de respuesta

res.send es equivalente a res.write + res.end
Entonces la diferencia clave es res.send se puede llamar solo una vez donde como res.write se puede llamar varias veces seguido de un res.end.

Pero aparte de eso res.send es parte de Express. Puede detectar automáticamente la longitud del encabezado de respuesta. Pero puede haber una posibilidad de un pico de memoria con res.send (), en el caso de archivos grandes, nuestra aplicación se bloquea en el medio.

Una de las diferencias más importantes lo que no se indica en ninguna de las respuestas es “agotador”.

los res.write puede devolver verdadero o falso. A partir de la documentación:

Devuelve verdadero si todos los datos se volcaron con éxito al búfer del kernel. Devuelve falso si todos o parte de los datos se pusieron en cola en la memoria del usuario. Se emitirá “drenaje” cuando el búfer esté libre de nuevo.

Entonces, al hacer res.write, la persona que llama debe posponer la escritura hasta que el evento de drenaje emita si el res.write devuelto falso.

Todos estos se manejan automáticamente en res.send. La compensación es el almacenamiento en búfer que tendrá que hacer cuando utilice este último.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *