FakeStore API

A FakeStoreAPI é uma API que oferece dados fictícios (Fake) realistas para desenvolvedores de e-commerce (comércio eletrônico). Saiba como utilizá-la em seus projetos e explore exemplos de chamadas HTTP.

Oi Pessoal! A FakeStoreAPI é uma ferramenta gratuita que oferece uma API REST para obter dados fictícios de um e-commerce. É uma solução útil para desenvolvedores que precisam de dados de teste, amostras de código ou informações simuladas para seus sites de e-commerce ou de compras, tudo isso sem a necessidade de executar qualquer código no lado do servidor. Assim, neste artigo, vamos explorar as FakeStore API, suas funcionalidades e como você pode usá-la em seus projetos. Além disso, ela pertence a uma série de artigos aqui do blog denominados 7 APIs públicas, gratuitas e de qualidade, vamos conhecer mais.

O Que é a FakeStoreAPI?

De acordo com a descrição oferecida pela própria FakeStoreAPI, ela é uma API REST online free que fornece dados fictícios de comércio eletrônico. Assim, seu principal objetivo é oferecer um conjunto de dados que simule um ambiente de loja online, permitindo que os desenvolvedores acessem informações realistas sem a necessidade de manter um servidor para gerar esses dados.

Então, a FakeStoreAPI é especialmente útil para:

  • Ensino: Professores e instrutores podem usá-la como uma fonte de dados fake para ensinar programação de maneira prática, aplicando conceitos de comércio eletrônico.
  • Códigos de Exemplo: Desenvolvedores podem utilizar os dados fornecidos pela API em seus projetos de amostra e códigos de exemplo.
  • Testes: É uma ótima opção para realizar testes de integração ou testar funcionalidades de e-commerce em seus aplicativos.
  • Propósitos de Desenvolvimento: Se você está criando um site ou aplicativo de compras, a FakeStoreAPI pode fornecer dados iniciais para preencher seu banco de dados enquanto você desenvolve.

Endpoints da FakeStoreAPI

A FakeStoreAPI oferece uma variedade de rotas HTTP que permitem acessar diferentes tipos de dados fictícios relacionados ao comércio eletrônico. Há rotas relacionadas a produtos, carrinho de compras, usuários e login. Aqui estão algumas das principais rotas disponíveis.

Endpoint para usuários /users

Esse endpoint dá suporte a criação, consulta, ordenação etc. relacionado ao logins dos usuários. Essa API também fornece informações importantes para o endpoint de logins que será visto posteriormente.

GET https://fakestoreapi.com/users/1

{
  "address": {
    "geolocation": {
      "lat": "-37.3159",
      "long": "81.1496"
    },
    "city": "kilcoole",
    "street": "new road",
    "number": 7682,
    "zipcode": "12926-3874"
  },
  "id": 1,
  "email": "[email protected]",
  "username": "johnd",
  "password": "m38rmF$",
  "name": {
    "firstname": "john",
    "lastname": "doe"
  },
  "phone": "1-570-236-7033",
  "__v": 0
}

Essa rota pode ser chamada de alguns diferentes modos de acordo com o resoltado desejado. Veja algumas outras formas:

// Obter todos os usuários
GET https://fakestoreapi.com/users

// Obter apenas os usuários com Id = 1
GET https://fakestoreapi.com/users/1

// Obter usuários com o limite de 5 itens
GET https://fakestoreapi.com/users?limit=5

// Obter os usuários em ordem decrescente
GET https://fakestoreapi.com/users?sort=desc

// Remove o usuário com o Id=6 (lembrando que a remoção não ocorre de fato)
DELETE https://fakestoreapi.com/users/6

Além desses casos, também é possível atualizar (na verdade fingir que atualiza, porque nenhuma ação efetivamente altera o banco de dados). A atualização pode ser feita com os verbos PUT ou PATCH, do mesmo modo.

PUT https://fakestoreapi.com/users/7

{
	"email":"[email protected]",
	"username":"johnd",
	"password":"m38rm#F",
	"name":{
		"firstname":"John",
		"lastname":"Doe"
	},
	"address":{
		"city":"kilcoole",
		"street":"7835 new road",
		"number":3,
		"zipcode":"12926-3874",
		"geolocation":{
			"lat":"-37.3159",
			"long": "81.1496"
		}
	},
	"phone":"1-570-236-7033"
}

Endpoint para usuários /login

O endpoint de login realiza a autenticação dos usuários com base no nome de usuário e senha. Para descobrir os usuários e senhas consulte os endpoints do usuário /user.

POST https://fakestoreapi.com/auth/login
{
    "username": "mor_2314",
    "password": "83r5^_"
}
	

RESPOSTA
{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjIsInVzZXIiOiJtb3JfMjMxNCIsImlhdCI6MTY5NTQwMjQxOX0.H162XvXc7axN8ibead7faJ92FcoVUoUn3nGd9rPPsfk"
}

Endpoint para Obter produtos /products

Essa é uma das rotas mais importantes para uso prático. Ela traz os produtos de diferentes modos. Ela pode trazer todos os produtos, apenas um específico, podem ser limitados a uma quantidade x, ou podem ser ordenados. Esse primeiro exemplo é um GET que obtem o primeiro produto, mostrando os seus retornos, que incluem uma imagem.

GET https://fakestoreapi.com/products/1

{
  "id": 1,
  "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops",
  "price": 109.95,
  "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday",
  "category": "men's clothing",
  "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg",
  "rating": {
    "rate": 3.9,
    "count": 120
  }
}

as rotas a seguir trazem todos os produtos, produtos limitados por uma quantidade (no caso 5) e produtos ordenados.

GET https://fakestoreapi.com/products
GET https://fakestoreapi.com/products?limit=5
GET https://fakestoreapi.com/products?sort=desc

Endpoint para criar, modificar ou excluir produtos /products

Esse é o mesmo endpoint anterior, mas específico, cobrindo formas de modificar os itens. Devemos ter em mente que essa API é de testes, ou seja, nenhuma rota efetivamente modifica o banco de dados.

// Criação de um novo produto
POST https://fakestoreapi.com/products
{
"title": "test product",
"price": "13.5",
"description": "lorem ipsum set",
"image": "https://i.pravatar.cc",
"category": "electronic"
}

// Atualização de um produto (também pode-se utilizar o verbo PATCH)
PUT https://fakestoreapi.com/products/7
{
"title": "test product",
"price": "13.5",
"description": "lorem ipsum set",
"image": "https://i.pravatar.cc",
"category": "electronic"
}

// Deleção de um produto
DELETE https://fakestoreapi.com/products/6

Endpoint para Obter as Categorias dos produtos /products/category

As criar produtos eles são relacionados à categorias. Essa rota mostra as categorias existentes e favorece a manipulação, entretanto senti falta de metodos que suportem a criação de categorias.

GET https://fakestoreapi.com/products/categories
[
  "electronics",
  "jewelery",
  "men's clothing",
  "women's clothing"
]

GET https://fakestoreapi.com/products/category/jewelery
[
  {
    "id": 5,
    "title": "John Hardy Women's Legends Naga Gold & Silver Dragon Station Chain Bracelet",
    "price": 695,
    "description": "From our Legends Collection, the Naga was inspired by the mythical water dragon that protects the ocean's pearl. Wear facing inward to be bestowed with love and abundance, or outward for protection.",
    "category": "jewelery",
    "image": "https://fakestoreapi.com/img/71pWzhdJNwL._AC_UL640_QL65_ML3_.jpg",
    "rating": {
      "rate": 4.6,
      "count": 400
    }
  },
  {
    "id": 6,
    "title": "Solid Gold Petite Micropave ",
    "price": 168,
    "description": "Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.",
    "category": "jewelery",
    "image": "https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_.jpg",
    "rating": {
      "rate": 3.9,
      "count": 70
    }
  },
  {
    "id": 7,
    "title": "White Gold Plated Princess",
    "price": 9.99,
    "description": "Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...",
    "category": "jewelery",
    "image": "https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_.jpg",
    "rating": {
      "rate": 3,
      "count": 400
    }
  },
  {
    "id": 8,
    "title": "Pierced Owl Rose Gold Plated Stainless Steel Double",
    "price": 10.99,
    "description": "Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel",
    "category": "jewelery",
    "image": "https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_.jpg",
    "rating": {
      "rate": 1.9,
      "count": 100
    }
  }
]

Endpoint para Obter o Carrinho de compras /cart

Esse é outro método de grande relevancia para esse sistema. Com ele é possível manipular os diferentes carrinhos. Vamos ver algumas das principais formas de manipulação.

GET https://fakestoreapi.com/carts/5
{
  "id": 5,
  "userId": 3,
  "date": "2020-03-01T00:00:00.000Z",
  "products": [
    {
      "productId": 7,
      "quantity": 1
    },
    {
      "productId": 8,
      "quantity": 1
    }
  ],
  "__v": 0
}

Algumas querystrings são válidas para tudo nessa api: como é o caso do limit e do sort. Isso pode ser bastante relevante. Mas é também possível obter todos os valores através do /carts.

// Obtem todos os carrinhos, mas limitando a 5 itens
GET https://fakestoreapi.com/carts?limit=5

// Obtem todos os carrinhos, mas ordenando
GET https://fakestoreapi.com/carts?sort=desc

// Obtem todos os carrinhos
GET https://fakestoreapi.com/carts

Mas algo mais específico e cotidiano para os casos de uso na navegação do usuário final é a manipulação de um usuário específico. A seguir veja outras formas de manipulação:

// Obtem os carrinhos dentro de um intervalo de tempo
GET https://fakestoreapi.com/carts?startdate=2019-12-10&enddate=2020-10-10

// Obtem todos os carrinhos do usuário id=2
GET https://fakestoreapi.com/carts/user/2

Endpoint para criar, modificar ou excluir produtos /products

A essa altura é facil de deduzir como essa rota se comporta. Vamos ver alguns exemplo:

// Cria um carrinho novo para o usuário id=5
POST https://fakestoreapi.com/carts
{
   "userId":"5",
   "date":"2020-02-03",
   "products":[{"productId":"5","quantity":"1"},{"productId":"1","quantity":"5"}]
}

// Atualiza o carrinho 7
PUT https://fakestoreapi.com/carts/7
{
"userId":"5",
"date":"2020-02-03",
"products":[{"productId":"5","quantity":"1"},{"productId":"1","quantity":"5"}]
}

// Deleta o carrinho 8
DELETE https://fakestoreapi.com/carts/8

Conclusão – FakeStore API

Por fim, a FakeStoreAPI oferece uma maneira conveniente de acessar dados fake de e-commerce (comércio eletrônico para uma variedade de fins, desde aprendizado e ensino até desenvolvimento de aplicativos e testes. Assim, com suas diversas rotas HTTP, ela fornece acesso a informações detalhadas sobre produtos, categorias e carrinhos de compras. Desse modo, explore a FakeStoreAPI e aproveite os benefícios de utilizar dados fictícios em seus projetos de desenvolvimento


Thiago Anselme
Thiago Anselme - Gerente de TI - Arquiteto de Soluções

Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.

Deixe um comentário