Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[FRONT IN VALE - 2019] - INTRODUÇÃO AO MARAVILHOSO MUNDO DO GRAPHQL
Search
Kamila de fatima santos oliveira
August 10, 2019
Programming
1
120
[FRONT IN VALE - 2019] - INTRODUÇÃO AO MARAVILHOSO MUNDO DO GRAPHQL
Kamila de fatima santos oliveira
August 10, 2019
Tweet
Share
More Decks by Kamila de fatima santos oliveira
See All by Kamila de fatima santos oliveira
Minha aplicação virou um monstrinho e agora?
kamilahsantos
1
37
Spring + Localstack : usando aws de forma gratuita
kamilahsantos
2
140
Hacktoberfest DevsJavaGirl
kamilahsantos
0
32
[We are developers Java developer day ] - I will have to refactor ! And now ? Refactoring Techniques in Java
kamilahsantos
1
47
[Codecon summit ] Minha aplicação virou um monstrinho e agora ?
kamilahsantos
2
130
[Semana de SI - each usp] Desmistificando a carreira em tecnologia: de estágio a liderança técnica
kamilahsantos
0
57
[Alura DLC] Como se manter técnica em uma carreira de gestão
kamilahsantos
1
42
[CPBR15] Como o github projects pode ajudar nos seus estudos
kamilahsantos
0
53
[Developer week latam] I will have to refactor ! And now ?Refactoring Techniques in Java
kamilahsantos
1
33
Other Decks in Programming
See All in Programming
デザインシステムで Tailwind CSSとCSS in JSに分散投資をしたら良かった話
fsubal
18
4.9k
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
110
Code Reviews
bkuhlmann
4
880
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
310
チーム力を高めるスクラム実践法:カンバン公開と課題攻略について - ニフティのスクラムトーク Vol. 2 - NIFTY Tech Talk #18
niftycorp
PRO
1
110
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
280
Rails と人魚の話/rails-and-mermaid
sanfrecce_osaka
0
100
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
160
Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets
hollycummins
0
220
Elm 0.19.0 Changes
bkuhlmann
0
490
Milestoner
bkuhlmann
1
400
エンターテイメント業界で利用されるAWS
demuyan
0
200
Featured
See All Featured
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.2k
Facilitating Awesome Meetings
lara
41
5.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
Atom: Resistance is Futile
akmur
258
25k
Rails Girls Zürich Keynote
gr2m
91
13k
Fireside Chat
paigeccino
20
2.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Web Components: a chance to create the future
zenorocha
305
41k
What's in a price? How to price your products and services
michaelherold
237
11k
Transcript
Maravilhoso mundo do Graphql INTRODUÇÃO AO
@kamila_code kamilahsantos /kamila-santos-oliveira @kamilah_santos Kamila Santos, 21 anos Developer @devsjavagirl
Quem é esse tal de Graphql Linguagem de consulta baseada
em grafos, criada pelo Facebook em 2012
Quem é esse tal de Graphql O retorno dos dados
é totalmente previsível, e tornou open-source em 2015.
Quem usa Graphql?
É tipo Rest? NÃO
É tipo Rest? Em Rest, ao realizar buscas, temos vários
endpoints, no GraphQl só temos um endpoint para acessar os dados do servidor
É tipo Rest? Em Rest temos estrutura de dados fixa,
o que faz com que sempre traga mais dados do que o necessário
É tipo Rest? No Graphql trazemos exatamente o que precisamos
da nossa API através da construção de queries.
Como funciona?
Como funciona? Query language, server-side runtime para execução dessas queries
a partir da definição de schema (tipagem)
Como funciona? Não está vinculado a nenhum banco de dados
específico ou mecanismo de armazenamento.
Como funciona? Um service é criado definindo types e fields
e depois criando funções para cada type e cada field
Como funciona?
Como funciona?
Queries? Com o seu service em execução, podemos enviar queries
para serem validadas e executadas.
Queries? Um query é recebida e verificada para que somente
retorne os types e fields informados na query e depois é executada
Queries?
Queries?
Fields? As queries solicitam fields específicos em objetos .
Fields?
Fields? As queries em Graphql permitem percorrer objetos relacionados e
seus campos em uma única solicitação
Fields?
Fields?
Arguments? Além de atravessar pelos objetos e campos podemos passar
argumentos na busca desses dados
Arguments?
Arguments?
Arguments? Podemos passar argumentos para campos escalares, para fazer conversões
de dados no server em vez de cada client individualmente.
Arguments?
Arguments?
Aliases Os fields do objeto do resultado correspondem ao nome
do campo na consulta, não seria possível consultar diretamente o mesmo campo com argumentos diferentes.
Aliases Para resolver isto, podemos criar aliases, para renomear o
resultado do campo para algo mais descritivo que deseje.
Aliases
Aliases
Fragments Imagine uma situação que você tem duas pessoas e
quer exibi-las lado a lado junto com seus amigos, precisaríamos repetir os campos um para cada lado da comparação?
Fragments NÃO. Com os fragments podemos construir conjuntos de campos
e inclui-los nas consultas necessárias
Fragments
Fragments
Fragments
Fragments A ideia dos fragments é recomendada em situações em
que precisamos dividir os requisitos de dados do aplicativo em parte menores, quando precisa combinar componentes da UI com vários fragments diferentes numa busca inicial.
Usando variables em fragments Temos a possibilidade de usar variáveis
nos fragments das nossas consultas
Usando variables em fragments
Usando variables em fragments
Usando variables em fragments
Variáveis Para argumentos dinâmicos, o client pode precisar manipular os
arquivos em runtime e seriariza-la em formato em Graphql.
Variáveis O Graphql vai pegar esses dados e passar como
um dicionário separado.
Variáveis Substitua o valor estático na consulta por $variableName
Variáveis Declarar $variableNamecomo uma das variáveis aceitas pela consulta
Variáveis Passe variableName: value no dicionário de variáveis separado, específico
do transporte (geralmente JSON)
Variáveis
Variáveis
Directives Podem ser anexadas a um field ou inclusão de
fragment, podendo alterar a execução da consulta da forma que o servidor desejar
Directives @include(if: Boolean) Inclui somente se o resultado do campo
é true @skip(if: Boolean) pula o argumento se o elemento for true
Directives
Directives
Directives
Mutations? Da mesma forma que as Queries, nas Mutations podemos
passar campos aninhados
Mutations?
Mutations?
Mutations?
Schemas and Types
Schemas and Types
Interfaces Abstrai um conjunto de campos para serem implementados
Interfaces
Interfaces
Interfaces
Servers Clients
Referências https://graphql.org/learn https://graphql.org/code/#server-libraries https://graphql.org/code/#graphql-clients https://tableless.com.br/graphql-a-nova-era-d as-apis-web/
Referências https://speakerdeck.com/ketemartinsrufino/gr aphql-para-reduzir-complexidade-no-front-e-n o-back https://www.slideshare.net/PaulaSantana12?ut m_campaign=profiletracking&utm_medium=ss site&utm_source=ssslideview
Referências https://medium.com/idexo-developers/graphql -e-rest-quais-as-diferen%C3%A7as-99cae22871 a7 https://www.apollographql.com/ https://relay.dev/
Referências https://www.graph.cool/ https://hasura.io/
Obrigada <3