Express (Parte V) — Objeto de respuesta (Response Object) — res.*
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 estadoHTTP, el valor predeterminado es200(OK), podemos utilizar otros como404(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 es302res.set[ref] — Establecer un encabezado de respuesta,expresstiene como valor predeterminadotext/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étodores.jsonres.json[ref] — Envía de respuesta al cliente unJSONres.jsonp[ref] — Envía una respuestaJSONcon soporteJSONP.res.download[ref] — Va a convertir elpathen 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 default200
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 viewerpara chrome [ref], para ver los datosJSONde 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 mensajeSorry!e imprime en consola del servidorError: Download, aquí nos puede servir para saber el por qué no se ha podido descargar la imagen.
En la siguiente entrega vamos a ver Express (Parte VI) — Motor de plantillas con pug y EJS
La entrega pasada vimos Express (Parte IV) — Objeto de solicitud (Request Object) — req.*
Bibliografía y links que te puede interesar…
Iconos e imágenes…
