Skip to content

Latest commit

 

History

History
68 lines (53 loc) · 2.95 KB

File metadata and controls

68 lines (53 loc) · 2.95 KB

Nivel 2 — Tu primer endpoint

Objetivo: implementar tu primer endpoint completo, siguiendo un ejemplo ya construido. Este es el "hola mundo" del curso: pequeño a propósito, para que te enfoques en entender el patrón y no en pelear con la lógica.

Estudia el ejemplo guiado

Abre RecipeController.java y lee con calma los dos primeros métodos: getAllRecipes() y getRecipeById(String id). Ambos ya están completos y comentados línea por línea. Fíjate en el patrón:

  1. El método está anotado con el verbo HTTP correspondiente (@GetMapping, con o sin ruta adicional).
  2. Los parámetros de la URL se reciben con @PathVariable.
  3. El controller delega la lógica al RecipeService (inyectado por @Autowired) — nunca accede directo al repositorio ni a MongoDB.
  4. El resultado se envuelve en un ResponseEntity cuando necesitas control explícito del status code (por ejemplo, para devolver 404), o se devuelve el objeto/lista directamente cuando siempre respondes 200.

Tu tarea

Implementa GET /api/recipes/count, que debe devolver el número total de recetas almacenadas.

  1. En RecipeService.java, ya existe el método countRecipes() — está completo, úsalo como está (usa recipeRepository.count(), un método que Spring Data ya trae incluido en toda MongoRepository).
  2. En RecipeController.java, busca el método countRecipes() (tiene un comentario TODO nivel 2) e impleméntalo: debe devolver recipeService.countRecipes().

No necesitas crear ningún DTO nuevo: un long se serializa directo a JSON como un número. Sí, en serio, son literalmente dos palabras (recipeService.countRecipes()). Bienvenido al nivel más corto del curso — disfrútalo, el nivel 3 ya sube la apuesta.

Pistas

  • Compáralo con getAllRecipes(): es incluso más simple, porque no hay que mapear a DTO ni recorrer una lista.
  • La ruta es /api/recipes/count. Recuerda que @RequestMapping("/api/recipes") ya está puesto a nivel de clase, así que en el método solo agregas @GetMapping("/count").

Verificación de este nivel

./mvnw test -Dgroups=nivel1,nivel2

El workflow .github/workflows/nivel-02-primer-endpoint.yml corre esto automáticamente en cualquier rama. El corrector es RecipeCountTest.java — no lo modifiques.

También puedes probarlo a mano: levanta la API y entra a http://localhost:8080/api/recipes/count, o usa el botón "Probar" del panel de avance (http://localhost:3000).

Endpoint número uno: hecho. Sigue con el nivel 3, donde por fin dejas de solo leer datos y empiezas a crearlos, cambiarlos y borrarlos.