4Geeks logo
4Geeks logo

Cursos

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp de Programación

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Full-Stack Software Developer - 16w

Data Science and Machine Learning - 16 wks

Buscar en lecciones


IngresarEmpezar
← Volver a Proyectos

Family Static API with Flask

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

  • Data Structures

  • Serialization

  • Python

  • json

  • Flask

  • REST

  • APIs

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Regístrate para obtener acceso a proyectos similares

Lo usaremos para darte acceso a la comunidad.
¿Ya tienes una cuenta? Inicia sesión aquí.

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Weekly Coding Challenge

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 reto

Podcast: Code Sets You Free

Un 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.

🌱 Cómo comenzar este proyecto

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

💻 Instalación

  1. Instala las dependencias del proyecto $ pipenv install.

  2. Entra dentro del virtual environment $ pipenv shell

  3. Inicio al servidor flask $ pipenv run start

  4. Prueba que el proyecto está correctamente terminado $ pipenv run test

✅ Autoevaluación

Evalúa tu código con el comando $ pipenv run test

📝 Instrucciones

  1. Crea el código necesario para desarrollar los API endpoints descritos más adelante.

  2. 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.
  1. Hemos preparado un conjunto de pruebas automatizadas que te darán una idea de si tu código es correcto, ejecuta las pruebas escribiendo $ pipenv run test en la línea de comandos (terminal o consola).

Estructuras de datos (Data structures)

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.

Estos son los miembros iniciales de la familia.

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

Endpoints

Esta API debe tener dos endpoints, ambos devuelven JSON:

1) Obtén todos los miembros de la familia:

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

2) Recupera solo un miembro

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

3) Añadir (POST) un miembro

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.

  • Si no lo incluye, tu API debe generar un id aleatorio al agregarlo a la familia.
  • Si lo incluye, entonces este es el valor que deberás usar como id al agregarlo.

4) ELIMINA un miembro

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

Requisitos tecnológicos

  • Todas las solicitudes y respuestas deben estar en content/type: application/json
  • Los códigos de respuesta deben ser 200 para tener éxito, 400 para una solicitud incorrecta o 404 para no encontrados.
  • Este ejercicio no incluye una base de datos, todo se debe hacer en la memoria RAM.

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.

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Regístrate para obtener acceso a proyectos similares

Lo usaremos para darte acceso a la comunidad.
¿Ya tienes una cuenta? Inicia sesión aquí.

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Dificultad

  • easy

Duración promedio

8 hrs

Tecnologías

Weekly Coding Challenge

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 reto

Podcast: Code Sets You Free

Un 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