Controlador

Los controladores son los encargados de interpretar las datos de las peticiones que realiza el usuario dependiendo del método y de la ruta implementada.
@RestController
public class PlayerController {
        @Autowired
        private PlayerService service;

        @GetMapping("/players")
        public ResponseEntity<List<PlayerModel>> getPlayers() {
                return new ResponseEntity<>(service.getAll(), HttpStatus.OK);
        }

        @GetMapping("/player/{id}")
        public ResponseEntity<PlayerModel> getPlayerById(@PathVariable("id") long id) {
                return new ResponseEntity<>(service.getById(id), HttpStatus.OK);
        }

        @PostMapping(value = "/player")
        public ResponseEntity<PlayerModel> createPlayer(@RequestBody PlayerModel player) {
                return new ResponseEntity<>(service.create(player), HttpStatus.OK);
        }

        @PutMapping("/player/{id}")
        public ResponseEntity<PlayerModel> updatePlayer(@PathVariable("id") long id, @RequestBody PlayerModel player) {
                return new ResponseEntity<>(service.update(id, player), HttpStatus.OK);
        }

        @DeleteMapping("/player/{id}")
        public ResponseEntity<Boolean> deletePlayer(@PathVariable("id") long id) {
                return new ResponseEntity<>(service.delete(id), HttpStatus.OK);
        }
}
  • @RestController: Combina las anotaciones @ResponseBody y @Controller. Indica la clase que hace de handler y convierte la respuesta de cada petición a JSON usando la librería Jackson.
  • @Autowired: Permite inyectar los beans automáticamente.
  • @GetMapping, @PostMapping, @PutMapping, @DeleteMapping: Indica la ruta y el método de la petición.
  • @PathVariable: Indica que un parámetro debe de estar vinculado a un parámetro de la plantilla URI.
  • @RequestBody: Indica que un parámetro debe de estar vinculado al valor del cuerpo de la petición.
La clase ResponseEntity maneja toda la respuesta HTTP incluyendo el cuerpo, cabecera y códigos de estado permitiendo configurar la respuesta que queremos que se envié desde los endpoints.