- Realiza un Fork de este repositorio:
-
Si vas a trabajar en tu equipo local clona el nuevo repositorio resultado del Fork y ábrelo con VSCode o el editor de tu preferencia para trabajar tu solución. También puedes trabajar tu solución en GitHub Codespaces.
-
Completa tus datos personales en la siguiente tabla:
Nombre Apellido CI nombre
apellido
ci
-
Realiza un commit de esta modificación y sube los cambios a tu repositorio remoto ejecutando los siguientes comandos desde la terminal de tu equipo local o desde GitHub Codespaces:
git add . git commit -m "datos actualizados" git push origin main
-
En la terminal ejecuta el siguiente comando para instalar las dependencias necesarias:
pip install -r requirements.txt
Te han contratado como Junior Back-End Developer en una empresa de desarrollo de apps para dispositivos móviles. Tu primera tarea es desarrollar una API RESTful que permita administrar la información de las partidas de un juego de Adivina el número que se encuentra en desarrollo. Cada partida tiene la siguiente información:
- id: Identificador único de la partida.
- player: Nombre del jugador.
- number: Número a adivinar.
- attempts: Lista de intentos realizados por el jugador.
- status: Estado de la partida.
La lógica del juego es la siguiente:
- El jugador crea una partida enviando su nombre.
- El servidor genera un número aleatorio entre 1 y 100.
- El jugador envía un número para adivinar.
- Si el número enviado por el jugador es igual al número generado por el servidor, la partida finaliza y se muestra un mensaje de felicitaciones.
- Si el número enviado por el jugador es menor al número generado por el servidor, se muestra un mensaje indicando que el número a adivinar es mayor.
- Si el número enviado por el jugador es mayor al número generado por el servidor, se muestra un mensaje indicando que el número a adivinar es menor.
Construye una API RESTful que permita realizar las operaciones CRUD sobre las partidas del juego de Adivina el número. La API debe permitir realizar las siguientes operaciones:
- Crear una partida.
- Listar todas las partidas.
- Buscar una partida por su id.
- Buscar una partida por el nombre del jugador.
- Actualizar los intentos de una partida.
- Eliminar una partida.
La API RESTful debe estar construida con el patrón de diseño SINGLETON y debe cumplir con los principios de desarrollo de Software DRY, KISS, YAGNI y la S de SOLID.
- POST
/guess
- Datos a enviar:
{ "player": "Julian" }
- Respuesta Esperada:
{ "player": "Julian", "number": 50, "attempts": [], "status": "En Progreso" }
- GET
/guess
- Respuesta Esperada:
{ "1":{ "id": 1, "player": "Julian", "number": 50, "attempts": [], "status": "En Progreso" } }
- GET
/guess/1
- Respuesta Esperada:
{ "1":{ "player": "Julian", "number": 50, "attempts": [], "status": "En Progreso" } }
- GET
/guess/?player=Julian
- Respuesta Esperada:
{ "1":{ "player": "Julian", "number": 50, "attempts": [], "status": "En Progreso" } }
- PUT
/guess/1
- Datos a enviar:
{ "attempt": "25" }
- Respuesta Esperada:
{ "message": "El número a adivinar es mayor" }
- GET
/guess
- Respuesta Esperada:
{ "1":{ "player": "Julian", "number": 50, "attempts": [25], "status": "En Progreso" } }
- PUT
/guess/1
- Datos a enviar:
{ "attempt": "75" }
- Respuesta Esperada:
{ "message": "El número a adivinar es menor" }
- GET
/guess
- Respuesta Esperada:
{ "1":{ "player": "Julian", "number": 50, "attempts": [25, 75], "status": "En Progreso" } }
- PUT
/guess/1
- Datos a enviar:
{ "attempt": "50" }
- Respuesta Esperada:
{ "message": "¡Felicitaciones! Has adivinado el número" }
- GET
/guess
- Respuesta Esperada:
json { "1":{ "player": "Julian", "number": 50, "attempts": [25, 75, 50], "status": "Finalizado" } }
- DELETE
/guess/1
- Respuesta Esperada:
{ "message": "Partida eliminada" }
- GET
/guess
- Respuesta Esperada:
{}
- La lógica de la API debe estar en el archivo
server.py
que se encuentra dentro de la carpetasolution
. - La lógica del cliente debe estar en el archivo
client.py
que se encuentra dentro de la carpetasolution
. - Una vez tengas los puntos 1 y 2 completados, realiza un commit con el mensaje "Entrega Final" y sube los cambios a tu repositorio remoto ejecutando los siguientes comandos desde la terminal de tu equipo local o desde GitHub Codespaces:
git add . git commit -m "Entrega Final" git push origin main
- Una vez completado el paso anterior adjunta la URL de tu repositorio de GitHub en la tarea asignada en Google Classroom.
Durante el examen solo puede consultar los siguientes recursos:
- Patrón de Diseño Singleton
- Documentación Oficial de Python
- Documentación de HTTP Server
- Documentación de la biblioteca requests
- Documentación del modulo urllib.parse
- No se permite el uso de frameworks como Flask, Django, FastAPI, etc.
- No se permite el uso de librerías externas que no estén dentro del archivo
requirements.txt
. - No se permite el uso de bases de datos.
- No se permite el uso de archivos para almacenar la información.
- La API debe ser RESTful.
- La API debe cumplir con las operaciones CRUD.
- La API debe cumplir con las rutas y resultados esperados.
- La estructura de la API debe estar construida con el patrón de diseño SINGLETON.
- La API debe cumplir con los principios de desarrollo de Software DRY, KISS, YAGNI y la S de SOLID.
- Los ids de las partidas deben ser únicos y manejados de forma incremental correlativa.