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.
Updated 2 months ago