Criando facilmente API RESTful para testes usando json-server
Durante o desenvolvimento, é comum entrarmos em cenários em que precisamos de uma API e ela não está disponível, seja por questões do ambiente de desenvolvimento ou por ainda estar sendo desenvolvida.
Isso é muito comum, principalmente para o front-end ou no mobile, quando sempre surge a necessidade de se criar uma API fake logo no início do projeto para podermos mockar os dados e simular a existência da API original. Além dos cenários comuns, existem também cenários de POC (Proof of Concept), em que a API precisa ser simulada para acelerar o processo de criação.
Esse processo de criação de uma API fake pode ser moroso e levar mais tempo do que o disponível, caso não saibamos usar as ferramentas certas.
JSON-SERVER
Para isso existe o json-server (github do projeto), uma lib feita em Node.js com o propósito de criar uma API RESTful fake usando como base somente um arquivo .json como fonte de dados. E o melhor: ela também faz a persistência dos dados nesse mesmo arquivo.
A promessa é conseguir fazer isso em apenas 30 segundos (ignorando o tempo do npm install). E, de fato, é possível. O arquivo com os dados é uma estrutura simples de objetos em json, em que cada propriedade representa uma entidade da API, e seu valor é um array com os dados disponíveis.
Veja um exemplo simplificado:
{ "posts": [ { "id": 1, "title":"json-server", "author": "douglasfernandesjr" }, { "id": 2, "title": "json-server - II", "author": "douglas" } ], "comments": [ { "id": 1, "body": "some comment", "postId": 1} ] }
db.json, arquivo com os dados de nossa API fake.
Após a criação do arquivo de dados, precisamos criar o arquivo package.json para configurar o json-server como dependência e também para criar um script para simplificar a inicialização do projeto.
Nota: usamos a versão 0.15.1, que é a última disponível na data de criação deste artigo.
package.json:
{ "scripts": { "start": "json-server --watch db.json" }, "dependencies": { "json-server": "^0.15.1" } }
package.json, com as pendências e atalho para inicialização.
Dentro da pasta, use o seguinte comando para instalar as dependências:
npm install
E o seguinte comando para iniciar a API:
npm start
Depois, acesse http://localhost:3000 e pronto!
Página inicial de nossa API em http://localhost:3000
Agora nossa API RESTful está pronta para ser utilizada e podemos usar os conceitos básicos de uma API REST para acessar e modificar nossos dados. Reforçando que ações como PUT, POST e DELETE vão alterar diretamente o arquivo.
Veja alguns exemplos:
GET http://localhost:3000/posts –Lista todos os posts
GET http://localhost:3000/posts/1 –Pega o post com id 1
GET http://localhost:3000/posts?author=douglas –Filtra os posts pelo campo passado.
GET http://localhost:3000/posts/1/comments –Pega todos os comentários relacionados ao post com id 1, faz isso através do campo postId.
POST http://localhost:3000/posts –Para criar um novo post dentro do nosso arquivo db.json.
Com isso, já podemos fazer uma API RESTful de forma fácil e acelerar o início dos nossos projetos, e também viabilizar aquela POC que estamos querendo fazer e acabamos deixando de lado pois não temos uma API.
Para o exemplo usado neste artigo, veja este repositório no github.
Para saber mais, veja a documentação oficial do json-server.