Breno está criando um serviço REST, que será disponibilizado...

Próximas questões
Com base no mesmo assunto
Q2447917 Programação
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: 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: D - RequestBody

Vamos entender porque a alternativa correta é a D - RequestBody e analisar as outras alternativas.

Quando Breno está criando um serviço REST utilizando Spring Boot, ele precisa garantir que os dados enviados na requisição HTTP sejam corretamente convertidos e mapeados para o parâmetro do método do controlador. Para isso, ele utiliza a anotação @RequestBody. Essa anotação informa ao Spring que ele deve converter o corpo da requisição JSON em um objeto Java. Dessa forma, os dados fornecidos pela requisição podem ser manipulados no serviço REST.

Análise das Alternativas:

A - PostMapping:

@PostMapping é uma anotação usada para mapear solicitações HTTP POST para métodos de manipulador específicos. Embora seja importante para definir o endpoint que manipula as requisições POST, não é responsável por converter o JSON do corpo da requisição em um objeto Java. Portanto, não é a anotação correta para essa situação.

B - RestController:

@RestController é uma anotação que combina @Controller e @ResponseBody. Ela é usada para denotar que a classe é um controlador REST, onde cada método retorna dados diretamente no corpo da resposta. No entanto, essa anotação não é usada para converter o JSON da requisição para um objeto Java. Portanto, não atende ao requisito de receber dados JSON no parâmetro do método.

C - GetMapping:

@GetMapping é usada para mapear solicitações HTTP GET para métodos de manipulador específicos. Como estamos tratando de uma inclusão de dados, que geralmente é feita via POST, essa anotação não é apropriada para o cenário descrito na questão. Além disso, assim como @PostMapping, @GetMapping não lida com a conversão de dados JSON.

E - PathParam:

@PathParam é uma anotação usada para extrair parâmetros diretamente da URL do endpoint. Embora seja útil para capturar partes específicas da URL, ela não tem relação com a conversão de dados JSON do corpo da requisição. Portanto, não é a anotação correta para a necessidade apresentada na questão.

Conclusão:

Para que o parâmetro receba corretamente os dados fornecidos pela requisição no formato JSON, a anotação correta a ser usada é @RequestBody. Ela é responsável por indicar ao Spring que o conteúdo da requisição deve ser convertido em um objeto Java, permitindo que Breno manipule esses dados em seu serviço REST.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A anotação correta que Breno deve utilizar para que o parâmetro receba os dados da requisição no formato JSON é a

D) RequestBody.

A anotação @RequestBody. instrui o Spring a mapear o corpo da requisição HTTP (que normalmente está em formato JSON) diretamente para o objeto correspondente em Java. Essa é a forma adequada de passar dados da requisição para o controlador em uma API REST.

  • A) PostMapping: Indica que o método responde a requisições HTTP POST, mas não mapeia diretamente os dados do corpo da requisição.
  • B) RestController: Anotação que define a classe como um controlador REST, mas não é usada para receber dados de requisição.
  • C) GetMapping: Define que o método responde a requisições HTTP GET, utilizado para recuperar dados, não para receber dados no corpo da requisição.
  • E) PathParam: Usado para mapear variáveis de caminho em uma URL, não para mapear o corpo da requisição.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo