Aprendre a implementar un servidor amb Express.js per a l'API REST.
-
Crea un sol repositori per a l'exercici, i envia l'URL perquè sigui revisat.
-
Documentar l'API de manera clara i concisa, incloent informació sobre les rutes, els paràmetres i les respostes esperades.
-
Fes ús de CI (Integració Continua) amb GitHub actions.
-
S'ha de treballar sobre el teu propi repositori, en un projecte clonat del projecte typescript-tdd-template. El lliurament es farà mitjançant pull-request al propi repositori.
En aquesta entrega crearem un servidor utilitzant Express.js, per proporcionar servei a l'API REST de la llista de tasques (TODO-LIST), aplicant l'arquitectura hexagonal. Implementarem les funcionalitats següents:
-
Afegir una tasca a la llista: Implementarem una ruta i un controlador per permetre als usuaris afegir noves tasques a la seva llista.
-
Marcar una tasca com a completada: Crearem una ruta i un controlador per a permetre als usuaris marcar una tasca com a completada.
-
Eliminar una tasca de la llista: Implementarem una funcionalitat per eliminar tasques de la llista utilitzant una ruta i un controlador adequats.
-
Mostrar la llista de tasques: Crearem una ruta i un controlador per obtenir i mostrar la llista completa de tasques als usuaris.
Documenta i adjunta les comprovacions amb una plataforma com Postman o Insomnia al teu projecte.
-
Inclou un middleware que afegeixi la capçalera Cache-control: no-cache. Habiliti CORS (Cross-Origin Resource Sharing) en les respostes, sigui mitjançant Express o mitjançant un altre middleware.
-
Afegeix un middleware retorni un HTTP Status 401 - Unauthorized si la capçalera de la petició no conté autenticació bàsica (usuari/ària i contrasenya).
Afegeix testing per comprovar el correcte funcionament de cadascun.
Creación de una Todo List en una API REST con una implementación de Union Architecture o Clean architecture y comprobaciones con ThunderClient.
Aquí la aquitectura del código según Union Architecture
src/
├── backend
│ ├── middlewares
│ │ ├── middleware-authentication.ts
│ │ └── middleware-basicAuth.ts
│ ├── load-environments.ts
│ └── serverExpress.ts
├── application
│ └── todoService.ts
├── domain
│ ├── entities
│ │ └── task.ts
│ └── repositories
│ │ └── todoRepository.ts
└── infrastructure
├── controllers
│ └── todoControllers.ts
├── routes
│ └── todoRoutes.ts
└──todoListArray.ts
El primer paso es instalar las dependencias para poder usar el programa:
npm install
Comprobación en Thunder Client
- Levantamos el servidor src/backend/serverExpress.ts en localhost: 8000
npm run start-server
- Ejecutamos la API en Thunder Client
http://localhost:8000/todo
Y podemos probar los metodos GET, POST, PUT y DELETE:
- GET: para leer todas las tareas
- POST: para subir tareas introducimos solo el campo "title":
{
"title": "tarea 1"
}
Y nos genera una tarea con:
[
{
"id": 1,
"title": "tarea 1",
"completed": false
}
]
- PUT: nos permite pasar la tareda designada por id en el path a true o false según su estado (toggle)
http://localhost:8000/todo/1
Tendríamos:
[
{
"id": 1,
"title": "tarea 1",
"completed": true
}
]
- DELETE: nos permite borrar la tareda designada por id:
http://localhost:8000/todo/1
-
Está el middleware Cache-control: no-cache y el CORS en el servidor.
-
Está hecho el middleware JSON web Token con pero falta implemetarlo en las routes/todoRoutes.ts y en el server
-
Está también una authentication Basic sin acabar de implementar y testear, en routes/todoRoutes.ts y en el server, ligado al .env-example para password y username
...