Questão de TI - Desenvolvimento de Sistemas — Geral — VUNESP 2026
TI - Desenvolvimento de Sistemas›Geral
Código
vu169379
Banca
VUNESP
Órgão
FAPESP
Ano
2026
Cargo
Ana Sist ( )
POST /produtos HTTP/1.1
Host: exemplo.com
Accept: application/json
Content-Type: application/json
Content-Length: 112
{
CodigoFabricante : XYZ123 ,
Nome : Relogio Digital ,
Categoria : Eletronicos ,
Preco : 180.00
}
Considere a seguinte requisição HTTP para um endpoint de uma API REST:
Considerando as convenções desse tipo de API, assinale a alternativa correta.
ASe o recurso correspondente ao cadastro do produto de código de fabricante "XYZ123" não for encontrado no servidor, espera-se uma resposta com código de status 404 Not Found.
BSe a requisição for processada com sucesso, espera- se uma resposta com código de status 201 Created.
CO conteúdo JSON do corpo da requisição apresenta erro de sintaxe, ocasionado resposta com código de status 400 Bad Request.
DEspera-se que seja retornada uma resposta cujo corpo contenha um array de objetos JSON que representem produtos que atendam a pelo menos um dos critérios informados, ou seja, código do fabricante igual a "XYZ123" , nome igual a "Relogio Digital" , categoria igual a "Eletronicos" ou preço igual a 180,00.
EA requisição propõe a alteração parcial de um recurso já existente no servidor, correspondente ao cadastro de produto identificado pelo código de fabricante "XYZ123" , com alteração dos atributos "Nome" , "Categoria" e "Preco".
Revelar gabarito e comentário▾
GabaritoB — Se a requisição for processada com sucesso, espera- se uma resposta com código de status 201 Created.
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”.
REST: métodos HTTP e códigos de status
Gabarito: letra B. A requisição POST /produtos com corpo JSON é uma operação de criação de recurso; quando processada com sucesso, a convenção REST determina a resposta com o código de status 201 Created (RFC 9110). As demais alternativas confundem o método POST com GET, PUT/PATCH ou apresentam leituras incorretas do corpo JSON.
O que está em jogo aqui é o mapeamento entre os métodos HTTP e os códigos de status em uma API REST. O método POST é usado para criar um novo recurso no servidor. Quando a criação é bem-sucedida, o servidor deve responder com 201 Created, indicando que o recurso foi criado e, geralmente, incluindo no corpo da resposta uma representação do novo recurso (com o Location header apontando para a URI do recurso criado). Esse é um dos códigos de status mais característicos de APIs REST e cai com frequência em provas.
Vamos entender cada código mencionado nas alternativas:
200 OK: resposta genérica de sucesso, usada quando a requisição foi processada com sucesso e o corpo da resposta contém o resultado. É o código padrão para GET, PUT e DELETE bem-sucedidos.
201 Created: resposta específica para operações de criação (POST ou PUT com criação). Indica que um novo recurso foi criado no servidor.
404 Not Found: indica que o recurso solicitado não existe no servidor. É típico de GET/PUT/DELETE quando a URI não corresponde a nenhum recurso.
400 Bad Request: indica que a requisição está malformada — por exemplo, JSON inválido, campos obrigatórios ausentes, ou tipos de dados incorretos.
A pegadinha desta questão está em confundir o método POST com GET ou com operações de atualização. O candidato que lê rapidamente pode achar que a requisição busca um produto (GET) ou altera parcialmente um recurso (PATCH), mas o verbo POST + o caminho /produtos (sem identificador) deixa claro que se trata de criação de um novo produto.
Outro ponto que merece atenção: o corpo JSON apresentado não tem erro de sintaxe. Embora as chaves não estejam entre aspas duplas (o que é obrigatório no JSON padrão), a banca considerou o JSON válido — provavelmente por se tratar de uma representação simplificada. Na prática, um JSON com chaves sem aspas é inválido, mas a alternativa C afirma que há erro de sintaxe e que isso geraria 400 Bad Request; como a banca não considerou esse erro, a alternativa C está incorreta. Se o JSON fosse realmente inválido, a resposta seria 400, mas a questão não adota essa leitura.
Guarde a relação entre método e código de status: POST → 201 Created é a assinatura clássica de criação em REST. É nessa relação que as alternativas se dividem.
Métodos HTTP × códigos de status: POST (Cria recurso, 201 Created); GET (Busca recurso, 200 OK, 404 Not Found); PUT/PATCH (Altera recurso, 200 OK); DELETE (Remove recurso, 200/204 OK); Erro de requisição (400 Bad Request)
Alternativa A — ❌ Incorreta
A alternativa afirma que, se o recurso não for encontrado, espera-se 404 Not Found. Isso seria verdade se a requisição fosse um GET /produtos/XYZ123 (busca de um recurso específico). Mas aqui temos um POST /produtos, que cria um novo recurso — não busca um existente. O 404 não se aplica a uma operação de criação; se o servidor não encontrar algo, seria mais provável um 409 Conflict (se o produto já existir) ou 422 Unprocessable Entity (se houver erro de validação). O 404 é típico de GET, PUT ou DELETE quando a URI não existe.
Alternativa B — ✅ Correta ⟵ GABARITO
A requisição é um POST para /produtos, com corpo JSON contendo os dados do produto. Em REST, POST é o método para criar um novo recurso. Quando a criação é bem-sucedida, o código de status padrão é 201 Created (RFC 9110, seção 15.3.3). A alternativa B espelha exatamente essa convenção: "Se a requisição for processada com sucesso, espera-se uma resposta com código de status 201 Created." É a resposta correta.
Alternativa C — ❌ Incorreta
A alternativa afirma que o corpo JSON tem erro de sintaxe e que isso geraria 400 Bad Request. De fato, um JSON com chaves sem aspas duplas é tecnicamente inválido (a especificação JSON exige aspas duplas nas chaves). No entanto, a banca não considerou esse erro — o corpo foi tratado como válido para fins da questão. Além disso, mesmo que houvesse erro de sintaxe, o código seria 400 Bad Request, mas a alternativa C está incorreta porque a premissa do erro de sintaxe não foi adotada pela banca. Se você marcar C, estará caindo na pegadinha de "achar" um erro onde a questão não vê.
Alternativa D — ❌ Incorreta
A alternativa descreve uma resposta que seria típica de um GET com parâmetros de busca (query string ou filtros), retornando um array de produtos que atendam aos critérios. Mas a requisição é um POST de criação — não uma busca. O POST /produtos cria um único produto; a resposta esperada é o recurso criado (ou apenas o status 201), não uma lista de produtos. A alternativa confunde o método POST com GET e o conceito de criação com o de consulta.
Alternativa E — ❌ Incorreta
A alternativa afirma que a requisição propõe a alteração parcial de um recurso existente. Isso seria o papel do método PATCH (alteração parcial) ou PUT (alteração total). O POST, por definição, é para criar um novo recurso — não para alterar um existente. Além disso, a URI /produtos não contém um identificador (como /produtos/XYZ123), o que reforça que se trata de criação, não de atualização de um recurso específico. A alternativa E troca o método POST por PATCH/PUT.
NÃO CAIA NESSA!
A banca explora a confusão entre os métodos HTTP. O candidato que lê o corpo com CodigoFabricante e pensa "isso é uma atualização" marca E; o que pensa "vou buscar esse produto" marca A ou D. Mas o verbo POST + a URI /produtos (sem ID) só pode significar criação. Decore a tríade: POST → 201 Created, GET → 200 OK, PUT/PATCH → 200 OK, DELETE → 200/204. Com esse mapa, você elimina as alternativas erradas de imediato.