Pular para o conteúdo principal

Questão de Arquitetura de Software — Arquitetura de Software — FCPC 2026

Arquitetura de SoftwareArquitetura de Software
Código
qg675028
Banca
FCPC
Órgão
UFCA
Ano
2026
Nível
Superior
Cargo
Analista de Tecnologia da Informação / Área: Arquitetura e Desenvolvimento de Sistemas – Back-End
Um arquiteto de software está modernizando a documentação de uma aplicação construída com Spring Boot 3. Ele optou por utilizar a biblioteca springdoc-openapi para expor a interface do Swagger conforme os padrões da especificação OpenAPI 3.x. Ao implementar o controlador responsável pela gestão de inventário, ele precisa anotar um método que recupera um item específico pelo seu código identificador (ex: GET /produtos/{codigo}). Considerando as boas práticas e a compatibilidade com a especificação OpenAPI 3.x, assinale a alternativa que apresenta as anotações específicas de documentação do pacote io.swagger.v3.oas.annotations para descrever, respectivamente, a finalidade do endpoint e o detalhamento do parâmetro recebido na URL.
  1. A@Api para a definição do recurso e @ImplicitParam para documentar o código identificador na rota.
  2. B@ApiOperation para descrever a ação do método e @ApiParam para detalhar as restrições do código do produto.
  3. C@Operation para descrever o objetivo do endpoint e @Parameter para fornecer informações detalhadas sobre o identificador do produto.
  4. D@GetMapping para o mapeamento da rota, sendo desnecessário qualquer outro recurso.
Revelar gabarito e comentário

GabaritoC — @Operation para descrever o objetivo do endpoint e @Parameter para fornecer informações detalhadas sobre o identificador do produto.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Anotações OpenAPI 3.x no Spring Boot

Gabarito: letra C. As anotações corretas do pacote io.swagger.v3.oas.annotations para descrever a finalidade do endpoint e o parâmetro da URL são, respectivamente, @Operation e @Parameter. A banca testa a distinção entre as anotações da especificação OpenAPI 3.x (Swagger 3) e as da versão anterior (Swagger 2).

A especificação OpenAPI 3.x (suportada pelo springdoc-openapi) utiliza as anotações do pacote io.swagger.v3.oas.annotations. Para descrever um endpoint (operação), usa-se @Operation; para detalhar um parâmetro (como o {codigo} na URL), usa-se @Parameter. Essas anotações substituem as antigas @ApiOperation e @ApiParam do Swagger 2 (pacote io.swagger.annotations).

Anotação (Pacote io.swagger.v3.oas.annotations)

Finalidade no Endpoint

Detalhamento do Parâmetro na URL

Compatibilidade com OpenAPI 3.x

@Operation

Descreve o objetivo do endpoint (ex.: "Recupera um item do inventário")

✅ Nativa da especificação

@Parameter

Fornece informações detalhadas sobre o parâmetro {codigo} (tipo, formato, obrigatoriedade)

✅ Nativa da especificação

@ApiOperation (Swagger 2)

Descreve a ação do método

❌ Pacote io.swagger.annotations (versão anterior)

@ApiParam (Swagger 2)

Detalha restrições do código do produto

❌ Pacote io.swagger.annotations (versão anterior)

@Api (Swagger 2)

Marca controlador como recurso

❌ Não descreve endpoint individual

@ImplicitParam

Não existe no Swagger 3

❌ Incorreta

@GetMapping (Spring MVC)

Mapeamento de rota HTTP

❌ Anotação de framework, não de documentação

Alternativa A — ❌ Incorreta

@Api é uma anotação do Swagger 2 usada para marcar um controlador como recurso, mas não descreve a finalidade do endpoint. @ImplicitParam não existe no Swagger 3; o equivalente correto é @Parameter. A alternativa mistura anotações desatualizadas e incorretas.

Alternativa B — ❌ Incorreta

@ApiOperation e @ApiParam pertencem ao Swagger 2 (io.swagger.annotations) e não ao pacote io.swagger.v3.oas.annotations. Embora ainda possam funcionar com algumas bibliotecas, a questão especifica a versão 3.x e o pacote v3, portanto as anotações corretas são @Operation e @Parameter.

Alternativa C — ✅ Correta ⟵ GABARITO

Exatamente como descrito: @Operation documenta o propósito do endpoint (ex.: "Recupera um item do inventário") e @Parameter detalha o parâmetro {codigo} (ex.: tipo, formato, obrigatoriedade). Ambas fazem parte do pacote io.swagger.v3.oas.annotations e são nativas da especificação OpenAPI 3.x.

Alternativa D — ❌ Incorreta

@GetMapping é uma anotação do Spring MVC para mapeamento de requisições HTTP, não de documentação. A questão pede especificamente anotações de documentação da OpenAPI 3.x, portanto é insuficiente e inadequada.

NÃO CAIA NESSA!

A banca quer que você diferencie as anotações do Swagger 2 (@Api, @ApiOperation, @ApiParam) das da OpenAPI 3.x (@Operation, @Parameter). Lembre-se: o pacote io.swagger.v3.oas.annotations é o novo padrão e exige as anotações atualizadas.

Gabarito: letra C.

Link permanente: /questoes/qg675028