_____ _ _
| ___| (_) | |
| |__ _ __ _ ___ ___ __| | ___ ___
| __| | '_ \ | |/ __| / _ \ / _` | / _ \/ __|
| |___ | |_) || |\__ \| (_) || (_| || __/\__ \
\____/ | .__/ |_||___/ \___/ \__,_| \___||___/
| |
|_|
La siguiente es sólo una guía, tienen libertad de modificar lo que quieran.
La idea es practicar y hacer lo que más nos gusta... CODEAR !!!
Pueden hacerlo en grupo, o individualmente y luego hacer una puesta en común.
Aún no trabajamos con bases de datos, pero podemos simular las peticiones a nuestros datos locales.
Recuerda utilizar siempre buenas prácticas, y retornar respuestas también en casos de error.
Con mucho 💛 para la Cohorte FT47
Ariel Romero...
Desarrollar el servidor de una App que permita administrar episodios, mediante la cual se repasará Express.
Utilizaremos la estrategia "modular", por lo que la estructura de archivos y carpetas sugerida es la siguiente:
/ m2-episodes-ft47
/ src
/ controllers
/ routes
/ services
/ utils
server.js
index.js
- Abrimos terminal ubicados en la raíz del proyecto
- Corremos el comando de node:
npm init -yes
- cors
- express
- morgan (opcional)
- nodemon (como dependencia de desarrollo)
npm install cors express morgan
npm install --save-dev nodemon
- Crear el script en el package.json para poder levantar servidor con nodemon
"scripts": {
"start": "nodemon index.js"
- Modifica los archivos necesarios para levantar el servidor.
- Crea un servidor modularizado.
- El archivo "index.js" sólo icluirá el ".listen"
- Modularizar cada ruta principal en un archivo distinto.
- Utilizaremos las siguientes rutas principales.
- localhost:3000/
- localhost:3000/user
- localhost:3000/episode
- Configura los Middlewares necesarios, cors y morgan
- No olvides utilizar el middleware
app.use(express.json())
- Crearemos dentro de la carpeta "utils" el archivo "dataBase.js", que simulará nuestra base de datos.
- Dentro de este archivo crea la variable "dataBase" (no olvides exportarla...).
- Será un objeto, donde almacenaremos a todos los "usuarios" y "episodios".
- Tendrán la siguiente estructura:
dataBase = {
allUsers: [
{
name: "Rick",
email: "rick@gmail.com",
password: "1234",
},
],
allEpisodes: [
{
id: 2,
name: "Nombre del Episodio",
episode: "Season 01 - Episode 02",
completed: false || true,
},
],
};
- Tomaremos por id del usuario su email.
- Tomaremos la propiedad "id", "name" y "episode" de la Rick&Morty API.
- Recibe por body los datos necesarios: name, email y password.
- Valida que no se haya registrado el email ingresado.
- Crea un nuevo objetos con los datos recibidos del usuario.
- Agrega el objeto creado al array "allUsers".
- Responde con status 200 y el objeto creado.
- Extra Credit: Puedes validar formato del email y largo de la contraseña.
- Crea las rutas que permitan:
- Modificar un usuario
- Traer información de un usuario
- Eliminar un usuario
- Para indicar cuál es el usuario elegido puedes utilizar "Params".
- Para hacer las peticines a la API de Rick & Morty utilizaremos "axios"
- Instalaremos "axios":
npm install axios
- Recibe por params el id del episodio que deseamos agregar.
- Realiza la petición "axios" a la siguiente url:
https://rickandmortyapi.com/api/episode/${id}
- Crea un nuevo "episode" con las propiedades:
- id: toma el valor desde lo recibido por la API
- name: toma el valor desde lo recibido por la API
- episode:toma el valor desde lo recibido por la API
- completed: que se inicializa en "false" (Esta propiedad le permitirá al usuario indicar si ya vió el episodio)
- Agrega el episodio creado al array de "allEpisodes"
- Devuelve el array de "allEpisodes"
- Realiza la petición "axios" a la siguiente url:
- Creamos el resto del CRUD para la gestión de episodios
- Read: Leer
- Update: Actualizar
- Esta ruta recibirá por body el "id" del episodio y los datos que se desean modificar
- Intenta que esta ruta pueda modificar una o todas las propiedades recibidas
- Delete: Borrar
- Ten en cuenta que tenemos varios usuarios, por lo que debemos validar según los datos enviados
- Podemos simular un "token" para enviarle al cliente, y solicitarlo en nuestras rutas
- También podemos utilizar la librería jsonwebtoken para generar un token real
- Podemos revisar nuestras credenciales ingresando por consola:
git config --list
- Configurando nuestras credenciales:
- Por ejemplo:
- Si nuestro usuario es CohorteFT38b
- Y nuestro email es: ejemplo@gmail.com
- Por ejemplo:
git config --global user.name "CohorteFT38b"
git config --global user.email ejemplo@gmail.com
- Y para subir nuestros cambios a GitHub:
git add .
git commit -m "aquí nuestro comentario"
git push