Nota: para estos ejercicios no se recomienda la documentación oficial de Express (para la mayoría de los ejercicios), ya que es demasiado genérica. En su lugar: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Introduction#introducing_express
Video explicativo de los ejercicios - Link
npm init -y
npm install express
Comprueba que en el fichero package.json se ha instalado la dependencia express
- Crea un nuevo servidor. Cuando el usuario navuegue a "http://localhost:3000", debe devolver el siguiente texto '
Aquí iría el contenido del mensaje
'.
No debes utilizar el método write de NodeJS. En su lugar, usa una única vez el método send de Express en el objeto res para enviar una respuesta al cliente.
- Recuerda añadir el status a la respuesta de valor 200; para indicar que la comunicación ha ido bien
Pregunta: ¿has necesiado indicar el tipo de codificación de los carácteres en la respuesta? ¿Y el tipo de datos devuelto?
- Instala nodemon:
npm install --save-dev nodemon
Crea un script en el package.json para ejecutar server1:
scripts: {
server1: "nodemon server1.js"
}
Comprueba que puedes ejecutar el script con:
npm run server1
Comprueba también que, al realizar un cambio en server1.js, el servidor es recargado automáticamente.
Crea un nuevo script en package.json para desarrollar el server2.js. A partir de ahora, lo haremos así para todos los servidores.
De esta manera, deberías ser capaz de ejecutar
npm run server2.js
Y que nodemon se encargue de recargar el servidor si el fichero server2.js sufre modificaciones.
Crea un nuevo servidor, de nombre server2 y que haga exactamente lo mismo que server1; pero esta vez, solo mostrarà la respuesta HTML si y solo sí el usuario accede a 'http://localhost:3000/mensaje'. Si el usuario accede a cualquier otra URL, el servidor devuelve un mensaje que dice : "No he encontrado lo que buscabas...". Además, recuerda devolver un status 404 en este caso.
Debes usar una vez el método app.get y otra app.use para conseguir esta funcionalidad. ¿Que diferencia puedes apreciar entre los dos métodos, en cuanto a la gestión de las peticiones del cliente?
Extra: ¿Qué mensaje genera Express si no encuentra un endpoint que coincida con la petición del cliente? Dicho de otro modo, explora como funciona tu script si solo pusieras la sentencia app.get('/mensaje', etc...)
Pista
Crea una nueva entrada en la sección de scripts de package.json que te permita ejecutar:
npm run server3
Modifica tu servidor para que ahora, en función de la URL que acceda el usuario. devuelva un fichero HTML u otro:
-
Si el usuario introduce la URL 'http://localhost:3000/nacktschnecke', debemos devolver el fichero HTML ubicado en server3-files/nacktschnecke.html
-
Si el usuario introduce la URL 'http://localhost:3000/about', debemos devolver el fichero HTML ubicado en server3-files/about.html
-
En cualquier otro caso, debemos devolver este texto 404. Resource not found. Además, utiliza el código HTTP adecuado para contestar al navegador Web. Comprueba que tu código de error aparece de manera explcíta en la respuesta, explorando la pestaña "Network" de tus herramientas de desarrollador del navegador.
Pista
Crea una nueva entrada en la sección de scripts de package.json que te permita ejecutar:
npm run server4
Crea un nuevo servidor. Este servidor implemeta un solo endpoint, que va a comprobar si la última parte de la URL es un palíndromo o no.
Fíjate que la última parte de la URL cambia, pero el endpoint check es el mismo. Recuerad que a esto la llamamos ruta dinámica.
-
Si el usuario accede a http://localhost:3000/check/eye, el servidor devolverà "Es un palíndromo".
-
Si el usuario accede a http://localhost:3000/check/vaca, el servidor devolverà "NO es un palíndromo"
Si el usuario no accede al endpont 'check' el servidor debe devolver un error 404, similar al ejercicio anterior.
Fíjate que no tienes que implementar la funcionalidad para saber si una palabra es un palíndromo o no. Tienes un custom module preparado para utilizarlo en utils/palindrome. Tan solo debes importarlo.
BONUS: ¿Serías capaz de devolver el mensaje adecuado sin tener que usar dos veces el método 'send' en tu servidor?
Crea una nueva entrada en la sección de scripts de package.json que te permita ejecutar:
npm run server5
-
Si el usuario accede a http://localhost:3000/check/?palabra=eye, el servidor devolverà "Es un palíndromo".
-
Si el usuario accede a http://localhost:3000/check/?palabra=vaca, el servidor devolverà "NO es un palíndromo"
Si el usuario no accede al endpoint 'check' el servidor debe devolver un error 404, similar al ejercicio anterior.
En este caso debes acceder a la query string de la URL para obtener la palabra a comprobar.
BONUS: No utilices el custom module de la carpeta Util. En su lugar, busca un paquete de terceros adecuado para llevar a cabo esta funcionalidad.
Crea una nueva entrada en la sección de scripts de package.json que te permita ejecutar:
npm run server6
Este servidor tiene ya implementado un endpoint, concretamente, al directorio raiz. Cuando el cliente hace un GET a '/formulario' obtenemos un formulario simple.
- Fíjate que la página HTML que devuelve el servidor pide cargar unos estilos, que no es capaz de encontrar. Dichos estilos estan ubicados en la carpeta server-6-static-files de nuestro servidor. Modifica el server6.js de tal manera que un cliente pueda hacer peticiones a dicha carpeta para obtener recursos; de tal manera que cuando accedamos a http://localhost:3000/formulario, se carguen los estilos de dicho HTML correctamente.
- Implemente un endpoint que caputre un POST al endpoint '/formulario'; y que simplemente se encargue de retornar los datos enviados por el formulario en formato JSON.
Debes obtener una respuesta similar a esta
- Borra la carpeta node_modules
- Envia todo el proyecto a tun compañero/a
- El compañero/a debe ejecutar "npm install"; sin parámetros.
Si está bien creado el package.json; tu compañero/a debe ser capaz de ejecutar cualquier servidor en su máquina mediante "npm run nombre-del-servidor".