← Back to list

Spring Boot: Entendendo as Anotações do @RestController

@RestController

Thiago Menezes · 2025-03-21 21:54 · 0 claps · 2.2 min read
#spring-boot #getmapping #postmapping #path-variable #deletemaping
Open on Medium ↗

Spring Boot: Entendendo as Anotações do @RestController

@RestController

RestController é uma marcação adicionada em classes que são Controlladoras e ele faz com que automaticamente todos os métodos da classe retornem em Json.

@RequestMapping

Mano, isso basicamente retorna a rota BASE do controlador da sua entidade, ou seja, toda requisição que o usuário for fazer, ele vai usar esse parâmetro que você definir na marcação @RequestMapping.

Parâmetro

@RequestMapping recebe como parâmetro uma String, que será o nome da rota.

Exemplo:

@RestController
@RequestMapping("/usuarios")
public class UsuarioController {
    @GetMapping("/listar")
    public String listarUsuarios() {
        return "Listando todos os usuários!";
    }
}

👉 Todas as rotas dentro desse controller terão o prefixo /usuarios.

@GetMapping

É usado em QUALQUER MÉTODO que seja um GET

Exemplo:

@GetMapping("/mensagem")
public String getMensagem() {
    return "Olá, mundo!";
}

👉 Requisição: **GET [http://localhost:8080/mensagem](http://localhost:8080/mensagem)**O

@PostMapping

Usado em todo método que faz POST.

Exemplo:

@PostMapping("/adicionar")
public Usuario adicionarUsuario(@RequestBody Usuario usuario) {
    return usuario; // Simulando um retorno do usuário criado
}

👉 Requisição: **POST http://localhost:8080/adicionar O `@RequestBody` permite receber um JSON no corpo da requisição**.

Exemplo de Json enviado no POST:

{
    "nome": "Thiago",
    "email": "thiago@email.com"
}

@PutMapping

Usado em todo método que faz requisições PUT, que geralmente atualizam um objeto existente (update).

Exemplo:

@PutMapping("/atualizar/{id}")
public String atualizarUsuario(@PathVariable Long id, @RequestBody Usuario usuario) {
    return "Usuário com ID " + id + " atualizado com sucesso!";
}

👉 Requisição: **PUT http://localhost:8080/atualizar/1 O `@PathVariable`** captura o ID da URL.

Exemplo de json enviado no PUT:

{
    "nome": "Thiago Atualizado",
    "email": "thiago@email.com"
}

@DeleteMapping

Usamos isso em todo método que DELETA algum objeto.

Exemplo:

@DeleteMapping("/remover/{id}")
public String removerUsuario(@PathVariable Long id) {
    return "Usuário com ID " + id + " removido!";
}

👉 Requisição: **DELETE http://localhost:8080/remover/1 O `@PathVariable`** pega o ID a ser removido.

@RequestParam

Captura parâmetros de consulta (query parameters) na URL.

Toda vez que usamos @RequestParam em um parâmetro de uma requisição, significa que aquele parâmetro será recebido por meio da URL da requisição.

Exemplo:

@GetMapping("/buscar")
public String buscarUsuario(@RequestParam String nome) {
    return "Buscando usuário com nome: " + nome;
}

👉 Requisição: **GET [http://localhost:8080/buscar?nome=Thiago](http://localhost:8080/buscar?nome=Thiago)**

@PathVariable

Captura valores da URL.

@GetMapping("/usuario/{id}")
public String obterUsuario(@PathVariable Long id) {
    return "Usuário com ID: " + id;
}

👉 Requisição: **GET [http://localhost:8080/usuario/10](http://localhost:8080/usuario/10)**

@ResponseStatus

Quando adicionamos em um método, define o status HTTP que será retornado. (200, 300, 400, 500)

Exemplo:

@PostMapping("/criar")
@ResponseStatus(HttpStatus.CREATED) // Retorna HTTP 201 (Created)
public Usuario criarUsuario(@RequestBody Usuario usuario) {
    return usuario;
}

@ExceptionHandler

Trata exceções personalizadas.

Exemplo:

@ExceptionHandler(UsuarioNaoEncontradoException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public String handleUsuarioNaoEncontrado(UsuarioNaoEncontradoException ex) {
    return ex.getMessage();
}

Exemplo de @RestController com todas as anotações:

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

    @GetMapping("/{id}")
    public String obterUsuario(@PathVariable Long id) {
        return "Usuário com ID: " + id;
    }

    @GetMapping("/buscar")
    public String buscarUsuario(@RequestParam String nome) {
        return "Buscando usuário com nome: " + nome;
    }

    @PostMapping("/criar")
    @ResponseStatus(HttpStatus.CREATED)
    public Usuario criarUsuario(@RequestBody Usuario usuario) {
        return usuario;
    }

    @PutMapping("/atualizar/{id}")
    public String atualizarUsuario(@PathVariable Long id, @RequestBody Usuario usuario) {
        return "Usuário com ID " + id + " atualizado com sucesso!";
    }

    @DeleteMapping("/remover/{id}")
    public String removerUsuario(@PathVariable Long id) {
        return "Usuário com ID " + id + " removido!";
    }

    @ExceptionHandler(UsuarioNaoEncontradoException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public String handleUsuarioNaoEncontrado(UsuarioNaoEncontradoException ex) {
        return ex.getMessage();
    }
}

Resumão de cria 🔥


메타데이터
post_id
3d63a20badcc
slug
spring-boot-entendendo-as-anotações-do-restcontroller-3d63a20badcc
url
https://medium.com/@thiagoprogramador70x7/spring-boot-entendendo-as-anota%C3%A7%C3%B5es-do-restcontroller-3d63a20badcc
canonical_url
https://medium.com/@thiagoprogramador70x7/spring-boot-entendendo-as-anota%C3%A7%C3%B5es-do-restcontroller-3d63a20badcc
author_url
https://medium.com/@thiagoprogramador70x7
status
ok
fetched_at
2026-08-03 07:38:58