Linguagem de query e ambiente de execução para APIs
Ajuda na consulta dos seus dados
Fornece uma descrição completa dos dados da sua API
Dá ao cliente o poder de pedir exatamente o que precisa e nada mais
Habilita ferramentas poderosas às pessoas desenvolvedoras.
Criado em 2012 (Facebook) e ficou opensource em 2015
Necessidade de uma API de busca de dados poderosa o suficiente para contemplar todas as pesquisas do Facebook no alicativo
Simples o suficiente para uso de novos desenvolvedores
Criar APIs robustas de fácil manutenção e escalabilidade.
Utilizar qualquer banco de dados (SQL e noSQL) e qualquer linguagem de programação.
Gerar uma documentação completa com base nos types, queries e mutations criados.
Migrar uma API REST aos poucos para
uma API GraphQL.
Consumir outras APIs - REST ou GraphQL - sem dificuldades.
Retornar campos computados nas consultas.
Dar ao front mais liberdade na consulta dos dados.
Fazer tipagem de dados.
Necessidade de rápido processamento de dados.
Possui alta taxa de transferência de dados.
Precisa recuperar informações de diversos bancos de dados ou diferentes stacks.
Ideal para - mas não se limita a - aplicações com as seguintes características:
Necessidade de rápido processamento de dados.
Faz integração com serviços de terceiros.
Será implementada em diversas plataformas (app, web) e cada uma consome os dados de maneira diferente.
Precisa de respostas rápidas, mesmo em conexões
mais lentas (ex: 3G/4G).
Ideal para - mas não se limita a - aplicações com as seguintes características:
É o cerne do GraphQL!
Descreve todas as funcionalidades que teremos em nossa API
É como um contrato para os cliente
que consomem a API
Schema
O Schema é tudo!!!
TUDO no GraphQL é ou possui um type!
Os types serão grande parte do nossa Schema
Representam objetos de dados complexos que
possuem campos e seus tipos
Type
Esses objetos representam entidades na
nossa API GraphQL
Tipos padrões (Int, String, Boolean etc)
Tipos específicos (ID, Enum, Interface, Input etc)
Tipos super específicos!
Type - quais são?
Vamos falar sobre os tipos super específicos
no próximo slide!
Type - tipos específicos
type Serie {
id: ID
nome: String
personagens: [Personagem]
}
type Personagem {
id: ID
idade: Int
series: [Serie]
}
Types utilizados para fazer qualquer ação que não seja consulta na API (CrUD)
Mutation
mutation {
criarSerie(serie: SerieInput): Serie
}Types utilizados para fazer qualquer ação de consulta na API (cRud)
Query
query {
buscarSerie(nome: String): Serie
}Data Fetching
Documentação
Schema e sistema de tipos
Vantagens
Após os slides vamos ver exemplos disso ;)
404 not found
Desvantagens
Curva de aprendizagem lenta no começo
Grande potencial para consultas lentas
Incompatibilidade com cache na web*
Desvantagens
* Apollo Client ajuda nisso
Tecnologia muito recente
Biblioteca de gerenciamento de estado abrangente para Javascript que permite gerenciar dados locais e remotos com GraphQL
Nos ajuda a organizar os Schemas, gerenciar e executar as queries e mutations do GraphQL
A seguir vamos mostrar dois projetos (Vue e React/Next)
com Apollo Client
Nosso artigo - ainda em andamento
Pedro & Helen <3
Nos siga nas redes sociais!