Capítulo 16
API REST do Ateliê
2 min de leitura 403 palavras 1 gravura
Neste capítulo você vai expor GET e POST /oficinas com arquivo JSON local. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.
Seu ponto de partida
Use o exemplo 16-node-api do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.
Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.
Como praticar
Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.

GET devolve coleção
Leia oficinas.json e responda a lista. Sem banco neste volume.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
const dados = JSON.parse(fs.readFileSync('oficinas.json', 'utf8'));
Mude uma coisa e preveja
Inclua uma oficina no arquivo e consulte GET.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
A nova oficina aparece no JSON.
Se não acontecer
Caminho do arquivo relativo ao cwd do processo.
POST acrescenta item
Leia o corpo, valide nome, gere id, grave o arquivo. Responda 201.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
res.writeHead(201, { 'Content-Type': 'application/json' });
Mude uma coisa e preveja
Rejeite nome vazio com 400.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
POST inválido não grava.
Se não acontecer
Acumule o body em ‘data’ events.
CORS só se precisar
Se o front estiver em outra origem/porta, configure cabeçalhos com cuidado. Preferência: servir front e API juntos no próximo volume.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
mesma origem > CORS amplo
Mude uma coisa e preveja
Teste GET com curl na mesma máquina.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
JSON válido retorna.
Se não acontecer
Confira a porta 8781 do exemplo.
Atividades
Atividade 1
Onde os dados ficam neste volume?
Atividade 2
Qual status de criação bem-sucedida?
Atividade 3
O que validar no POST?
Respostas comentadas
Resposta da atividade 1
Arquivo oficinas.json no disco local.
Resposta da atividade 2
Resposta da atividade 3
Nome presente e não vazio (mínimo).