Slide 1

Slide 1 text

INTRO GRAPHQL Lucas Viana 17/11/2023

Slide 2

Slide 2 text

AGENDA 1 2 3 CONTEXTO APLICAÇÃO EXEMPLOS

Slide 3

Slide 3 text

QUEM SOU EU Me chamo Lucas Viana, mas pode me chamar de Baú! - Caiçara - Aspirante a corredor - Pintor de botões profissional - Estudante de Mandarim

Slide 4

Slide 4 text

1. CONTEXTO Por que o GraphQL existe? Que problema ele tenta resolver?

Slide 5

Slide 5 text

MOBILE - Facebook mobile - Fracasso - Renovação

Slide 6

Slide 6 text

CONCEPÇÃO

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

CONCEPÇÃO - Nick lança a RFC - Lee e Dan se juntam - GraphQL anunciado

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

2. APLICAÇÃO Onde o GraphQL se aplica?

Slide 12

Slide 12 text

- Banco de dados - Framework - Substituição ao REST GraphQL NÃO É:

Slide 13

Slide 13 text

COMO DEFINIR? De que forma é estruturada uma API GraphQL?

Slide 14

Slide 14 text

- Dono de uma linguagem própria - Fortemente tipado - Schema-based GraphQL É:

Slide 15

Slide 15 text

OPERAÇÕES

Slide 16

Slide 16 text

3. EXEMPLOS Mão na massa!

Slide 17

Slide 17 text

BIBLIOTECAS

Slide 18

Slide 18 text

API GITHUB

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

NOMES NAS OPERAÇÕES Nomeie com nomes únicos suas operações de Query e Mutation do lado do cliente. Usados para cache do lado do cliente, indexação em ferramentas como GraphQL playground, etc. Semelhante a nomear suas funções em JS ao invés de mantê-las anônimas.

Slide 21

Slide 21 text

VARIÁVEIS Operações podem definir argumentos, muito parecido com uma função na maioria das linguagens de programação. Essas variáveis podem então ser passadas para chamadas de query/mutation dentro da operação como argumentos. Espera-se que as variáveis sejam fornecidas em tempo de execução durante a execução da operação pelo seu cliente.

Slide 22

Slide 22 text

APOLLO CLIENT

Slide 23

Slide 23 text

O QUE É APOLLO CLIENT? Encapsula a lógica HTTP usada para interagir com uma API GraphQL. Também serve como uma alternativa para gerenciamento de estado do lado do cliente. Se sua API GraphQL for também um Apollo Server, oferece alguns recursos extras. Proporciona uma abordagem de plug-in para estender suas capacidades. Também é independente de framework.

Slide 24

Slide 24 text

ARMAZENANDO DADOS DA SUA API ● Todos os nós são armazenados de forma flat por um ID exclusivo ● O ID exclusivo é padronizado como .id ou ._id dos nós. Você pode mudar isso ● Cada nó deve enviar um .id ou ._id, ou nenhum. Ou você tem que personalizar essa lógica

Slide 25

Slide 25 text

QUERIES REACT

Slide 26

Slide 26 text

MUTATION REACT

Slide 27

Slide 27 text

MANTENDO O CACHE ATUALIZADO

Slide 28

Slide 28 text

PORQUE ESTÁ DESATUALIZADO? Se você realizar uma mutação que atualize ou crie um único nó, o Apollo atualizará seu cache automaticamente, dada a mutação e a consulta terá os mesmos campos e ID. Se você executar uma mutação que atualize um nó em uma lista ou remova um nó, você será responsável por atualizar quaisquer consultas que façam referência a essa lista ou nó. Há muitas maneiras de fazer isso com o Apollo.

Slide 29

Slide 29 text

MANTENDO ATUALIZADO ● Buscar novamente consultas correspondentes após uma mutação ● Use o método de atualização na mutação ● Consultas de observação

Slide 30

Slide 30 text

OPTIMISTIC UI

Slide 31

Slide 31 text

O QUE É OPTIMISTIC UI? Sua UI não espera até depois de uma operação de mutação para se atualizar. Em vez disso, ele antecipa a resposta da API e prossegue como se a chamada da API estivesse sincronizada. A resposta da API substitui a gerada. Isso dá a ilusão de que você está sendo muito rápido.

Slide 32

Slide 32 text

OPTIMISTIC UI COM MUTATIONS Apollo fornece um hook simples que permite gravar no cache local após uma mutação.

Slide 33

Slide 33 text

CLIENT SIDE SCHEMAS

Slide 34

Slide 34 text

PORQUE? Além de gerenciar dados de sua API, o cliente Apollo também pode criar estados locais originados do seu front-end. Coisas que você normalmente armazenaria em algo como Redux ou Vuex. Você pode criar um esquema para definir esse estado, o que permite consultar esse estado da mesma forma que você consulta dados em sua API

Slide 35

Slide 35 text

COMO? Exatamente da mesma maneira que o servidor. Você apenas precisa estender os tipos do esquema do seu servidor. Em seguida, você usa uma diretiva para acessar o estado local a partir de suas consultas e mutações.

Slide 36

Slide 36 text

EXEMPLO

Slide 37

Slide 37 text

SCHEMA

Slide 38

Slide 38 text

SCHEMA

Slide 39

Slide 39 text

SCHEMA

Slide 40

Slide 40 text

SCHEMA