Breno está criando um serviço REST, que será disponibilizado por meio de um aplicativo Spring Boot. Como ele já conhece o padrão do REST, criou um método de inclusão no controlador, tendo como parâmetro uma entidade do tipo gerenciado pelo serviço. Para que o parâmetro receba corretamente os dados fornecidos pela requisição, no formato JSON, Breno irá utilizar nesse parâmetro a anotação:
- A)PostMapping;
@PostMapping define o verbo HTTP do endpoint, mas não é a anotação usada para ler o JSON do corpo da requisição no parâmetro.
- B)RestController;
@RestController marca a classe como controlador REST, porém não serve para converter o JSON recebido em objeto no argumento do método.
- C)GetMapping;
@GetMapping mapeia requisições GET, e não a leitura de dados enviados no corpo em uma inclusão.
- D)RequestBody;
@RequestBody está correta porque instrui o Spring a desserializar o JSON do corpo da requisição para o parâmetro do método.
- E)PathParam.
@PathParam é usada em outro contexto, mais ligada a parâmetros de caminho ou à tecnologia JAX-RS, não sendo a anotação adequada no Spring para esse caso.
Gabarito: D
No Spring Boot, quando você recebe dados enviados no corpo da requisição em formato JSON, o ponto-chave é dizer ao framework: “pegue o conteúdo do body e converta para o objeto Java”. É exatamente isso que a anotação @RequestBody faz em um parâmetro de método, especialmente em endpoints de inclusão, atualização e consumo de APIs REST. Na prática, o controlador recebe a requisição, o Spring usa seus conversores de mensagem para ler o JSON e preencher a entidade informada. Então, se o método de inclusão recebe uma entidade como parâmetro, a anotação correta é a que mapeia o corpo da requisição para esse objeto. As outras opções confundem mapeamento de rota com leitura de dados. @PostMapping define que o método responde a requisições POST, @GetMapping responde a GET, e @RestController identifica a classe como controlador REST. Nenhuma delas faz o trabalho de transformar o JSON enviado pelo cliente em um objeto Java. Em prova, guarde a lógica: rota e verbo HTTP são uma coisa; conteúdo enviado no corpo da requisição é outra. Se o enunciado fala em dados no formato JSON chegando para um parâmetro de método, a anotação clássica do Spring é @RequestBody.