Express (Parte V) — Objeto de respuesta (Response Object) — res.*

Mauricio Garcia
5 min readJun 7, 2022

--

Temario

  • Objeto de respuesta (Response Object) — res.*
  • Envío de respuesta HTTP (res.send)
  • Envío de respuesta JSON (res.json)
  • Envío de respuesta download (res.download)

i. Objeto de respuesta (Response Object)

Es un parámetro que recibe la función de devolución de llamada o función de middleware comúnmente llamado res o response. Inicia como una instancia de http.ServerResponse[ref] y representa la respuesta HTTP que envía una aplicación express cuando recibe una solicitud HTTP.

Las propiedades y métodos más comunes son:

  • res.status[ref] — Establecer el código de estado HTTP, el valor predeterminado es 200(OK), podemos utilizar otros como 404 (No encontrado), 500 (Error del servidor), 204(Sin datos)
  • res.cookie[ref] — Establece o borra las cookies que se almacenarán en el cliente.
  • res.redirect[ref] — Re-dirigir una solicitud, donde el código por default es 302
  • res.set[ref] — Establecer un encabezado de respuesta, express tiene como valor predeterminado text/html, si deseamos cambiarlo a un texto sin formato, debemos llamar este método y poner 'res.set('Content-type', 'text/plain')
  • res.send[ref]— Envía una respuesta al cliente, si el retorno es un arreglo o un objeto se recomienda utilizar el método res.json
  • res.json[ref] — Envía de respuesta al cliente un JSON
  • res.jsonp[ref] — Envía una respuesta JSON con soporte JSONP.
  • res.download[ref] — Va a convertir el path en un archivo descargable, dando la oportunidad de especificar el nombre del archivo a descargar.
  • res.render[ref] — Va a renderizar una vista, usando el motor de plantillas configurado, teniendo un código default 200

Para ver todas las propiedades que tiene [ref].

Expliquemos un poco más a fondo res.send, res.json, res.download

ii. Envío de respuesta HTTP (res.send)

Envía la respuesta HTTP, donde puede ser: Buffer, string, Array o un objeto JSON

— Ejemplo (JSON)

Haciendo la petición desde Postman:

Haciendo la petición desde el navegador:

Nota: He instalado la extensión JSON viewer para chrome [ref], para ver los datos JSON de manera más amigable

Haciendo la petición con fetch:

— Ejemplo 2 (text)

Haciendo la petición desde Postman:

Haciendo la petición desde el navegador:

Haciendo la petición con fetch:

iii. Envío de respuesta JSON (res.json)

La respuesta puede ser cualquier valor JSON, incluido: objeto, arreglo, cadena de texto, número o booleano.

— Ejemplo

Haciendo la petición desde Postman:

Haciendo la petición desde el navegador:

Haciendo la petición con fetch :

iv. Envío de respuesta download (res.download)

Convierte el archivo path a un “archivo adjunto”, donde los navegadores solicitarán al usuario la descarga; por default el nombre del archivo es el encabezado de filename del header, utiliza res.sendFile[ref] para transferir el archivo. Cuando se completa la transferencia o se produce un error, el método llama al callback (opcional).

Donde:

  • (A) — Descargar un archivo con el nombre default
  • (B) — Descargar un archivo con un nombre diferente
  • (C)— Descargar un archivo con un nombre diferente y detectar cuando la descarga fue exitosa o tuvo un error.

— Ejemplo 1

Vamos a ocupar el ejemplo donde tenemos las imágenes:

Nota: Recuerda agregar algún archivo para descargar dentro del proyecto (en este caso se está usando una de las imágenes del ejemplo anterior)

Haciendo la petición desde el navegador:

— Ejemplo 2

Podemos aprovechar el segundo parámetro, para ponerle un nombre personalizado al archivo:

Haciendo la petición desde el navegador:

— Ejemplo 3

Vamos a utilizar la función de retorno, para saber si descargó la imagen o ha generado un error:

  • En caso de que SÍ encuentre la imagen, se descarga e imprime en consola del servidor Success: Download, quizás una idea de implementación es : Cuándo al usuario se le limita las descargas.
  • En caso de que NO encuentre la imagen o tenga un error, retorna el status 500, con el mensaje Sorry! e imprime en consola del servidor Error: Download, aquí nos puede servir para saber el por qué no se ha podido descargar la imagen.

--

--