ETEC COMENDADOR JOÃO RAYS
Ensino médio com habilitação profissional de técnico
em Informática para Internet
Turma: 2.º Ano
Interfaces Web II – 4.º Bimestre
Prof. Me. Márcio Jesus de Morais
marciojmorais@[Link]
FUNDAMENTOS DE API E REST
A. Fundamentos de API e Contratos
1. Defina API com rigor técnico e diferencie interface (contrato) de
implementação (serviço).
R: APIs são mecanismos que permitem que dois componentes de software
se comuniquem usando um conjunto de definições e protocolos.
2. Liste os elementos mínimos de um contrato de API HTTP (endpoints,
métodos, cabeçalhos relevantes, esquemas de payload, status e erros).
Explique a função de cada um.
- Endpoints: são as URLs específicas da API.
- Métodos: são ações HTTP que serão executadas na API, sendo os
principais GET (buscar dados), POST (inserir dados/alterações), PUT (alterar
um objeto por completo), PATCH (alterar parcialmente um objeto), DELETE
(deleta um dado).
- Headers: contém informações sobre a requisição, sendo os principais:
Content-Type (formato dos dados a serem enviados, ex: JSON, XML),
Authorization (senhas para autenticação, a chave da API), Accept (formato
dos dados a serem recebidos) e Status (um código HTTP que indica se a
requisição teve sucesso ou não e o porquê).
- Payload Schemas: indicam estrutura e tipo de dados retornados pela API,
importante para validação automática do Swagger, por exemplo.
- Status: um código HTTP que indica se a requisição teve sucesso ou não e
o porquê.
- Erros: os principais: de 201 a 299 (sucesso), 401 ao 599 (erro)
3. Explique acoplamento e coesão no contexto de APIs e como um bom
contrato reduz dependências entre times.
R: Coesão funciona semelhantemente ao SRP do SOLID, buscando a
responsabilidades únicas na API que tenham boa integração entre elas. E o
acoplamento se refere a dependência de módulos uns dos outros (um
aspecto negativo)
4. Compare API de biblioteca (in-process) com API remota (HTTP). Descreva
custos de rede e implicações de latência/falha.
R: A API in-process funciona tudo localmente após instalada, consumindo
diretamente recursos da máquina local. Enquanto a remota consome
recursos de uma aplicação na web, o que dispensa uma máquina forte, mas
torna necessária uma conexão.
B. HTTP Essencial para APIs
1. Descreva o modelo de requisição/resposta HTTP e como cabeçalhos,
método, URL, status e corpo se relacionam.
2. Defina semântica dos métodos GET, POST, PUT, PATCH e DELETE e aponte
efeito colateral e idempotência de cada um.
3. Explique status codes (faixas 2xx, 4xx, 5xx). Dê critérios objetivos para
escolher entre 400 vs 422, 401 vs 403, e 409.
C. REST (Estilo Arquitetural)
1. Defina REST (constraints) e discuta o impacto de stateless na escalabilidade
horizontal.
2. Defina recurso e representação. Dê exemplos de URIs adequadas para um
domínio “Cursos” (coleção, item, sub-recurso, filtros).
3. Estabeleça boas práticas de desenho de URI (plural, substantivos,
hierarquia, paginação por query, HATEOAS opcional) e más práticas comuns
(verbos na URL, sublinhados, campos de ação).
4. Explique idempotência com casos limite (repetição de POST vs PUT; DELETE
em recurso inexistente).
D. Modelagem de Dados e Validação
1. Proponha um esquema JSON para o recurso Curso (campos
obrigatórios/opcionais, tipos, restrições). Justifique decisões.
2. Diferencie validação de entrada (schema) de regras de domínio
(invariantes). Dê exemplos e status apropriados em falhas.
3. Discuta paginação (page/size vs cursor), ordenação e filtros; descreva
impactos em índices e consumo de banda.
E. Erros, Confiabilidade e Idempotência Operacional
1. Defina um formato padrão de erro (chaves, códigos internos, correlação).
Explique por que isso facilita observabilidade e suporte.
2. Explique retries com backoff exponencial e circuit breaker no cliente. Como
a idempotência no servidor evita efeitos duplicados?
3. Descreva quando retornar 409 Conflict e como projetar mensagens de erro
que permitam recuperação automática pelo cliente.
F. Segurança Essencial
1. Explique CORS de ponta a ponta: por que existe, quais cabeçalhos controla
e qual cenário não é problema de CORS.
2. Compare, em alto nível, API Key e Bearer Token (sem implementar OAuth).
Discuta escopo e expiração como mecanismos mínimos.
G. Observabilidade e Qualidade
1. Descreva logs estruturados para APIs (campos essenciais) e correlação de
requisições (ex.: X-Request-Id).
2. Explique métricas (latência p95/p99, taxa de erro, throughput) e health
checks (/health ou /ready).
3. Proponha um conjunto mínimo de testes automatizados (contrato, unidade,
integração) para estabilizar mudanças.
H. [Link]/Express — Implementação Profissional
1. Detalhe a pipeline de uma requisição no Express: middlewares de parsing,
roteamento, validação, handler, error handler.
2. Especifique um handler padrão de erros (mapeamento para 400/422/500,
log seguro de stack, resposta JSON).
3. Mostre como você faria validação de entrada com uma lib (ex.: Zod/Joi) e
como propagaria o erro para o middleware final.
4. Demonstre, com pseudocódigo ou snippet curto, paginação e filtro textual
em memória, retornando metadados (page, size, total, items).
5. Ilustre com 3 comandos curl um fluxo CRUD típico (criar → consultar item →
listar filtrado), incluindo cabeçalhos e verificação de status code.
6. Explique como adicionaria Idempotency-Key em POST /cursos: onde
armazenar, TTL sugerido e comportamento em repetição.
7. Descreva como retornaria ETag em GET /cursos/:id e trataria If-None-Match
(304).
I. Qualidade de Contrato e Documentação
1. Especifique o mínimo de um documento OpenAPI útil (tags, paths, schemas,
responses). Por que isso reduz atrito com front-end?
2. Defina um changelog de API conciso e como comunicaria deprecações
(datas, janelas, cabeçalhos de aviso).