0% acharam este documento útil (0 voto)
3 visualizações4 páginas

Fundamentos de API e REST - Questionário

O documento aborda os fundamentos de API e REST, incluindo definições técnicas, elementos de contratos de API HTTP, e a diferença entre APIs in-process e remotas. Também discute aspectos essenciais do HTTP, práticas de design de URIs, modelagem de dados, segurança, e observabilidade em APIs. Por fim, detalha a implementação profissional com Node.js/Express e a importância de documentação e qualidade de contrato.

Enviado por

filipschave
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
3 visualizações4 páginas

Fundamentos de API e REST - Questionário

O documento aborda os fundamentos de API e REST, incluindo definições técnicas, elementos de contratos de API HTTP, e a diferença entre APIs in-process e remotas. Também discute aspectos essenciais do HTTP, práticas de design de URIs, modelagem de dados, segurança, e observabilidade em APIs. Por fim, detalha a implementação profissional com Node.js/Express e a importância de documentação e qualidade de contrato.

Enviado por

filipschave
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

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).

Você também pode gostar