← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

O técnico em informática Marcos implementou o web service REST obtemPong utilizando Java com framework Spring. O web service obtemPong recebe o parâmetro obrigatório ping. Observe abaixo o principal trecho do código-fonte de obtemPong: @GetMapping("/api/v1/pong") @ResponseBody public String obtemPong(@RequestParam String ping) { return ping; } Para que o parâmetro ping deixe de ser obrigatório e automaticamente assuma o valor “pong” caso esteja ausente da mensagem de requisição, Marcos deve adicionar à anotação @RequestParam do parâmetro ping o argumento:

Gabarito: C

No Spring, a anotacao @RequestParam serve para capturar parametros enviados na requisição, como query string ou form data. Por padrao, se voce declara @RequestParam String ping, o parametro é obrigatório: se ele nao vier, a aplicação tende a gerar erro de requisição ausente. É o tipo de detalhe que banca adora cobrar, porque basta trocar um atributo e tudo muda de comportamento. Quando voce quer que o parametro seja opcional e tenha um valor padrao, o Spring oferece o atributo defaultValue. Assim, se ping nao for informado, ele assume automaticamente o valor indicado. No caso da questao, se o parametro estiver ausente, o método deve usar "pong" como valor default. Por isso o gabarito é a letra C: defaultValue = "pong". A ideia nao é renomear o parametro, nem mexer em required com expressao estranha, mas simplesmente definir um valor de reserva para quando a requisição nao trouxer nada. Em termos práticos, o método continua funcionando sem depender da presenca do parametro. Resumo de prova: required controla obrigatoriedade, defaultValue define o valor padrão. A banca gosta dessa dupla porque parece detalhe de sintaxe, mas é exatamente o detalhe que derruba quem confunde nome do parametro com valor padrao.

Continue treinando

Questões relacionadas