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.