Visão Geral

Storefront API

O Storefront API permite ao lojista proporcionar a melhor experiência de compra onde quer que seu cliente esteja. Além da opção padrão por website, a API também pode ser utilizada para personalizar outras alternativas, como aplicativos ou totens em lojas físicas.

Com ela é possível acessar informações de produtos, hotsites, banners e conteúdos e realizar buscas de produtos paginados. Futuramente, será possível finalizar compras (frete, checkout e pagamentos), checar informações de pedidos realizados e personalizar temas para a loja virtual.

Casos de uso

  • Venda de produtos vinculados a uma loja Wake Commerce
  • Aplicativos utilizando a plataforma Wake Commerce
  • Venda ou consulta de produtos por outros meios, como totens em lojas físicas

GraphQL

O que é GraphQL?

GraphQL é uma linguagem de query para APIs usada para atender a essas queries com seus dados existentes em tempo de execução. GraphQL fornece uma descrição completa e compreensível dos dados em sua API, dá aos clientes o poder de pedir exatamente o que eles precisam e nada mais, torna mais fácil evoluir APIs ao longo do tempo e possibilita a criação de poderosas ferramentas de desenvolvimento.

Os dados são modelados em um esquema (schema) estaticamente tipado, ou seja, somente os tipos definidos que fizerem parte do schema são aceitos e retornados nas queries. Tendo um schema bem definido, é possível fazer requisições de campos específicos para sua aplicação, sem comprometer a performance do sistema, como, por exemplo, apenas o ID de um produto, sem suas informações de preço, nome, etc.

O GraphQL também permite juntar várias queries em apenas uma requisição, reduzindo o número de endpoints e consultas a bancos de dados necessários. Por exemplo, informações de produtos, banners e conteúdos em uma requisição para o mesmo endpoint do Storefront API.

O Storefront API utiliza como base o GraphQL para realizar a requisição dos dados.

Introdução ao GraphQL

Query

Como dito anteriormente, no GraphQL é possível obter o retorno apenas do que foi solicitado e nada mais.
Exemplo de query:

query { users { id login lastLoginAt } }

O retorno da query é em formato JSON, o que facilita ainda mais o entendimento.
Retorno da query de exemplo utilizada anteriormente:

{ "data": { "users": [ { "id": 1, "login": "user_1", "lastLoginAt": "2012-04-23T17:26:41.111Z" }, { "id": 2, "login": "user_2", "lastLoginAt": "2012-04-21T18:25:43.222Z" } ] } }

Argumentos

A depender da query, ela pode aceitar receber argumentos para auxiliar na filtragem dos dados solicitados. Exemplo:

query { user(id: 2) { id login lastLoginAt } }

Retorno:

{ "data": { "user": { "id": 2, "login": "user_2", "lastLoginAt": "2012-04-21T18:25:43.222Z" } } }

Mutation

São requisições com o intuito de inserir ou alterar dados. Exemplo:

mutation { setText(text: "text") { text } }

Retorno:

{ "data": { "text": "text" } }

Variáveis

Para queries e mutations é possível utilizar variáveis para auxiliar nas consultas e inserções. Exemplo de query:

query GetUser($userId: Long){ user(id: $userId) { id login lastLoginAt } }

As variávies são em formato JSON:

{ "userId": 2 }

Retorno:

{ "data": { "user": { "id": 2, "login": "user_2", "lastLoginAt": "2012-04-21T18:25:43.222Z" } } }

As mutations seguem o mesmo esquema.