Regístrate para obtener acceso a proyectos similares
Todas las semanas escogemos un proyecto de la vida real para que construyas tu portafolio y te prepares para conseguir un trabajo. Todos nuestros proyectos están construidos con ChatGPT como co-pilot!
Únete al retoUn podcast de cultura tecnológica donde aprenderás a luchar contra los enemigos que te bloquean en tu camino para convertirte en un profesional exitoso en tecnología.
Escuchar el podcast¡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 una herramienta de aprovisionamiento 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
Inicio al servidor flask $ pipenv run start
Prueba que el proyecto está correctamente terminado $ pipenv run test
Evalúa tu código con el comando $ 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 logica 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: Array of int
La estructura de datos family será una clase con la siguiente estructura:
1class Family: 2 3 def __init__(self, last_name): 4 self.last_name = last_name 5 # example list of members 6 self._members = [{ 7 "id": self._generateId(), 8 "first_name": "John" 9 "last_name": last_name 10 }] 11 12 # read-only: Use this method to generate random members ID's when adding members into the list 13 def _generateId(self): 14 return randint(0, 99999999) 15 16 def add_member(self, member): 17 ## you have to implement this method 18 ## append the member to the list of _members 19 pass 20 21 def delete_member(self, id): 22 ## you have to implement this method 23 ## loop the list and delete the member with the given id 24 pass 25 26 def update_member(self, id, member): 27 ## you have to implement this method 28 ## loop the list and replace the member with the given id 29 pass 30 31 def get_member(self, id): 32 ## you have to implement this method 33 ## loop all the members and return the one with the given id 34 pass 35 36 def get_all_members(self, id): 37 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 dos endpoints, ambos devuelven JSON:
Devuelve todos los miembros de la familia.
1GET /members 2 3status_code 200 si se agregó con éxito, 400 si no lo hace porque el cliente (solicitud) falla, 500 si el servidor encuentra un error 4 5RESPONSE BODY (content-type: application/json): 6 7[], // Lista de miembros de la familia. 8
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 agregó con éxito, 400 si no lo hace porque el cliente (solicitud) falla, 500 si el servidor encuentra un error 6 7body: // el objeto json del miembro de la familia 8 9{ 10 "id": Int, 11 "first_name": String, 12 "age": Int, 13 "lucky_numbers": List 14} 15
Lo que agrega un nuevo miembro a la estructura de datos de la familia
1POST /member 2 3REQUEST BODY (content_type: application/json): 4 5{ 6 first_name: String, 7 age: Int, 8 lucky_numbers: [], 9 id: Int *optional 10} 11 12RESPONSE (content_type: application/json): 13 14status_code: 200 si se agregó con éxito, 400 si no lo hace porque el cliente (solicitud) falla, 500 si el servidor encuentra un error 15 16body: vacío
Ten en cuenta que el diccionario que envía la solicitud POST puede contener una propiedad y un valor para el id
del miembro a crear.
id
aleatorio al agregarlo a la familia.id
al agregarlo.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 fue eliminado con éxito, 400 si no lo fue porque el cliente (solicitud) falla, 500 si el servidor encuentra un error 6 7body: { 8 done: True 9} 10
200
para tener éxito, 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 Curso de Programación para convertirte en Full Stack Developer, o nuestro Data Science Bootcamp.
Regístrate para obtener acceso a proyectos similares
Todas las semanas escogemos un proyecto de la vida real para que construyas tu portafolio y te prepares para conseguir un trabajo. Todos nuestros proyectos están construidos con ChatGPT como co-pilot!
Únete al retoUn podcast de cultura tecnológica donde aprenderás a luchar contra los enemigos que te bloquean en tu camino para convertirte en un profesional exitoso en tecnología.
Escuchar el podcast