Servidor de Mock (JSON Server)
Para os desafios de front-end que exigem integração com APIs, utilizaremos o JSON Server. Ele permite criar uma API REST completa e falsa com zero codificação em menos de 30 segundos.
Por que usar?
- Simplicidade: Configuração rápida via arquivo JSON.
- Realismo: Suporta métodos HTTP (GET, POST, PUT, DELETE, PATCH).
- Agilidade: Permite que o desenvolvimento do front-end não dependa de um back-end pronto.
Instalação
Recomendamos utilizar o npx para rodar o servidor sem precisar instalá-lo globalmente, ou adicioná-lo como dependência de desenvolvimento no seu projeto:
bash
npm install -D json-server@0.17.4Nota: Recomendamos a versão 0.17.4 para maior estabilidade com os exemplos deste guia.
Configuração
- Na raiz do seu projeto, crie um arquivo chamado
db.json. - Adicione a estrutura de dados que você deseja simular.
Exemplo de db.json (Tema Telemedicina)
json
{
"patients": [
{
"id": "1",
"name": "João Silva",
"cpf": "123.456.789-00",
"status": "Aguardando"
},
{
"id": "2",
"name": "Maria Souza",
"cpf": "987.654.321-11",
"status": "Em Atendimento"
}
],
"appointments": [
{
"id": "1",
"patientId": "1",
"date": "2024-05-20T10:00:00Z",
"specialty": "Cardiologia"
}
]
}Como Rodar
Adicione um script no seu package.json para facilitar o uso:
json
"scripts": {
"server": "json-server --watch db.json --port 3001"
}Para iniciar o servidor, execute:
bash
npm run serverO servidor estará disponível em http://localhost:3001.
- Para listar pacientes:
GET http://localhost:3001/patients - Para buscar um paciente:
GET http://localhost:3001/patients/1 - Para criar um paciente:
POST http://localhost:3001/patients
Dicas para o Desafio
- Persistência: Lembre-se que o
json-serversalva as alterações diretamente no arquivodb.json. - Atraso na Resposta: Você pode simular lentidão na rede (ideal para testar loadings) usando a flag
--delay:bashjson-server --watch db.json --port 3001 --delay 1000 - Integração no React: No seu código, utilize o Axios ou Fetch apontando para a URL do servidor local.
Exemplo de Implementação (Axios)
typescript
import axios from 'axios';
const api = axios.create({
baseURL: 'http://localhost:3001'
});
export function getPatients() {
return api.get('/patients');
}