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.
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:
- El método está anotado con el verbo HTTP correspondiente
(
@GetMapping, con o sin ruta adicional). - Los parámetros de la URL se reciben con
@PathVariable. - El controller delega la lógica al
RecipeService(inyectado por@Autowired) — nunca accede directo al repositorio ni a MongoDB. - El resultado se envuelve en un
ResponseEntitycuando necesitas control explícito del status code (por ejemplo, para devolver404), o se devuelve el objeto/lista directamente cuando siempre respondes200.
Implementa GET /api/recipes/count, que debe devolver el número total de
recetas almacenadas.
- En
RecipeService.java, ya existe el métodocountRecipes()— está completo, úsalo como está (usarecipeRepository.count(), un método que Spring Data ya trae incluido en todaMongoRepository). - En
RecipeController.java, busca el métodocountRecipes()(tiene un comentarioTODO nivel 2) e impleméntalo: debe devolverrecipeService.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.
- 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").
./mvnw test -Dgroups=nivel1,nivel2El 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.