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:
- A)value = “pong”;
Errada, porque value define o nome ou alias do parametro esperado, nao um valor padrao.
- B)name = “pong”;
Errada, porque name também indica o nome do parametro na requisição, e nao o valor que ele deve assumir quando faltar.
- C)defaultValue = “pong”;
Certa, porque defaultValue permite que o parametro receba "pong" automaticamente caso ele nao venha na requisição.
- D)required = “ping?ping:pong”;
Errada, porque required recebe um booleano, como true ou false, e nao uma expressao ou texto desse tipo.
- E)value = “ping?ping:pong”.
Errada, porque value nao aceita essa lógica condicional e continua nao servindo para definir valor padrao.
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.