4Geeks logo
Sobre Nosotros

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.

Data Science and Machine Learning - 16 wks

Full-Stack Software Developer - 16w

Buscar en lecciones

Aprendizaje social y en vivo

La forma más eficiente de aprender: Únete a una cohorte con compañeros, transmisiones en vivo, sesiones improvisadas de codificación, tutorías en vivo con expertos reales y mantenga la motivación.

← Volver a Proyectos

Family Static API with Flask

Meta

Tutoriales y ejercicios de 4Geeks Coding Projects para personas que están aprendiendo a codificar o mejorando sus habilidades de codificación

Dificultad

beginner

Repositorio

Clic para abrir

Video

No disponible

Demo en vivo

No disponible

Duración promedio

8 hrs

Tecnologías

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

Meta

Tutoriales y ejercicios de 4Geeks Coding Projects para personas que están aprendiendo a codificar o mejorando sus habilidades de codificación

Dificultad

beginner

Repositorio

Clic para abrir

Video

No disponible

Demo en vivo

No disponible

Duración promedio

8 hrs