fbpx

CREAR un REST API con SPRING BOOT

REST es una arquitectura de estilo para una interfaz de programación de aplicaciones (API) y Spring Boot nos ayuda a crear nuestra aplicación de forma rápida y lista para lanzar a producción en un par de minutos.

Vídeo explicativo

Controlador REST

Los controladores son clases que nos permiten exponer nuestra API para ser usada de forma externa, en Spring Boot para declarar una clase como controlador, usaremos la anotación @RestController y usaremos diferente anotaciones extras para declarar en nuestros métodos que tipo de método HTTP se usará para llamar a nuestra lógica.

@RestController

@RestController nos creará una instancia en el contexto de Spring de la clase que contenga la anotación, de la misma forma que se crearía con la anotación @Component.

@RestController
@RequestMapping("/usuarios")
class UsuarioControlador {

}

La implementación de UsuarioControlador no es pública porque no necesita serlo.

@RequestMapping

La anotación @RequestMapping nos permite asignar una solicitud HTTP a un método o clase usando algunos criterios básicos cómo la ruta REST o el método HTTP.

@RequestMapping a nivel de clase

Podemos usar la anotación @RequestMapping a nivel de clase para asignar la ruta raíz de REST que se usará a nivel de clase.

@RestController
@RequestMapping("/usuarios")
class UsuarioControlador {

}

@RequestMapping a nivel de método

A nivel de método concatena la ruta de declarada nuestra clase con la ruta declarada en nuestro método, además podemos declarar diferentes métodos HTTP que nuestro método será asignado para la solicitud HTTP.

@RestController
@RequestMapping("/usuarios")
public class UsuarioControlador {

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public List<UsuarioDto> encontrarPorId(@PathVariable String id) {
    }
}

Métodos específicos

Podemos usar diferentes anotaciones para capturar solicitudes con métodos HTTP específicos.

@GetMapping

Anotación para asignar solicitudes HTTP GET a métodos de controlador específicos.

@RestController
@RequestMapping("/usuarios")
public class UsuarioControlador {

    @GetMapping("/{id}")
    public UsuarioDto encontrarPorId(@PathVariable String id) {
    }
}

@PostMapping

Anotación para asignar solicitudes HTTP POST a métodos de controlador específicos.

@RestController
@RequestMapping("/usuarios")
public class UsuarioControlador {

    @PostMapping
    public UsuarioDto crear(@RequestBody UsuarioDto usuario) {
    }
}

@PutMapping

Anotación para asignar solicitudes HTTP PUT a métodos de controlador específicos.

@RestController
@RequestMapping("/usuarios")
public class UsuarioControlador {

    @PutMapping("/{id}")
    public void actualizar(@PathVariable( "id" ) String id, @RequestBody UsuarioDto usuario) {
    }
}

@DeleteMapping

Anotación para asignar solicitudes HTTP DELETE a métodos de controlador específicos.

@RestController
@RequestMapping("/usuarios")
public class UsuarioControlador {

    @DeleteMapping("/{id}")
    public void eliminar(@PathVariable( "id" ) String id) {
    }
}

@ResponseStatus

Cuando un punto final regresa con éxito, Spring proporciona una respuesta HTTP 200 (OK).

Si queremos especificar el estado de respuesta de un método de controlador, podemos marcar ese método con @ResponseStatus. Tiene dos argumentos intercambiables para el estado de respuesta deseado: code y value.

@RestController
@RequestMapping("/usuarios")
public class UsuarioControlador {

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public UsuarioDto crear(@RequestBody UsuarioDto usuario) {
    }
}