¡La familia "Jackson" necesita una API estática! Necesitamos construir las estructuras de datos (data structures) y crear un API endpoint para interactuar con él utilizando Hoppscotch (recomendado) o Postman.
Este proyecto viene con los archivos necesarios para comenzar a trabajar de inmediato.
Recomendamos abrir este mismo repositorio usando un entorno de desarrollo como Codespaces (recomendado) o Gitpod. Alternativamente, puedes clonarlo en tu computadora local usando el comando git clone
.
Este es el repositorio que necesitas abrir:
1https://github.com/breatheco-de/exercise-family-static-api
Instala las dependencias del proyecto $ pipenv install
.
Entra dentro del virtual environment $ pipenv shell
Inicia el servidor flask $ pipenv run start
$ pipenv run test
Crea el código necesario para desarrollar los API endpoints descritos más adelante.
Los únicos dos archivos que tienes que editar son:
src/datastructure.py
: Contiene la estructura de datos FamilyStructure
que se encarga de manejar la familia.src/app.py
: Es el código de tu API, aquí debes agregar los endpoints (rutas) y la lógica de programación.$ pipenv run test
en la línea de comandos (terminal o consola).Cada miembro de la familia Jackson debe ser un diccionario, equivalente a Objetos literales en JS - y tienen estos valores:
1+ id: Int 2+ first_name: String 3+ last_name: String (Siempre Jackson) 4+ age: Int > 0 5+ lucky_numbers: List of integers
La estructura de datos family será una clase con la siguiente estructura:
1class FamilyStructure: 2 def __init__(self, last_name): 3 self.last_name = last_name 4 self._next_id = 1 5 self._members = [] 6 7 # Este método genera un 'id' único al agregar miembros a la lista (no debes modificar esta función) 8 def _generate_id(self): 9 generated_id = self._next_id 10 self._next_id += 1 11 return generated_id 12 13 def add_member(self, member): 14 ## Debes implementar este método 15 ## Agrega un nuevo miembro a la lista de _members 16 pass 17 18 def delete_member(self, id): 19 ## Debes implementar este método 20 ## Recorre la lista y elimina el miembro con el id proporcionado 21 pass 22 23 def get_member(self, id): 24 ## Debes implementar este método 25 ## Recorre la lista y obtén el miembro con el id proporcionado 26 pass 27 28 def get_all_members(self, id): 29 return self._members
Nota: no olvides inicializar la clase: jackson_family = FamilyStructure('Jackson')
antes de las rutas.
1John Jackson 233 Years old 3Lucky Numbers: 7, 13, 22 4 5Jane Jackson 635 Years old 7Lucky Numbers: 10, 14, 3 8 9Jimmy Jackson 105 Years old 11Lucky Numbers: 1
Esta API debe tener 4 endpoints, todos devuelven JSON:
Devuelve todos los miembros de la familia.
1GET /members 2 3status_code 200 si se realizó con éxito, 400 si hubo un error por parte del cliente, 500 si el servidor encuentra un error 4 5RESPONSE BODY (content-type: application/json): 6 7[] <!--- Lista de miembros de la familia -->
Devuelve el miembro de la familia para el cual id == member_id
.
1GET /member/<int:member_id> 2 3RESPONSE (content_type: application/json): 4 5status_code 200 si se realizó con éxito, 400 si hubo un error por parte del cliente, 500 si el servidor encuentra un error 6 7body: <!--- el objeto json del miembro de la familia --> 8{ 9 "id": Int, 10 "first_name": String, 11 "age": Int, 12 "lucky_numbers": List 13}
Agrega un nuevo miembro a la estructura de datos de la familia.
1POST /member 2 3REQUEST BODY (content_type: application/json): 4{ 5 id: Int, 6 first_name: String, 7 age: Int, 8 lucky_numbers: [] 9} 10 11RESPONSE (content_type: application/json): 12 13status_code 200 si se realizó con éxito, 400 si hubo un error por parte del cliente, 500 si el servidor encuentra un error
Elimina el miembro de la familia para el cual id == member_id
.
1DELETE /member/<int:member_id> 2 3RESPONSE (content_type: application/json): 4 5status_code 200 si se realizó con éxito, 400 si hubo un error por parte del cliente, 500 si el servidor encuentra un error 6 7body: { 8 done: True 9}
200
para solicitudes exitosas, 400
para una solicitud incorrecta o 404
para no encontrados.Este y otros proyectos son usados para aprender a programar por parte de los alumnos de 4Geeks Academy Coding Bootcamp realizado por Alejandro Sánchez y muchos otros contribuyentes. Conoce más sobre nuestros Cursos de Programación para convertirte en Full Stack Developer, o nuestro Data Science Bootcamp.
Para prepararte mejor para completar estos ejercicios, sugerimos los siguientes materiales