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
GraphQl, Front queries made easy
Search
Igor Halfeld
December 01, 2018
Programming
2
46
GraphQl, Front queries made easy
How to deal with graphql on client-side
Igor Halfeld
December 01, 2018
Tweet
Share
More Decks by Igor Halfeld
See All by Igor Halfeld
Modular monoliths with fastify
igorhalfeld
0
110
How to migrate legacy frontend?
igorhalfeld
1
81
Patterns for perfect components in Vue.js
igorhalfeld
0
98
Clean Architecture no Front-end (update 2021-05-11)
igorhalfeld
0
35
Step by step I followed a career in software
igorhalfeld
0
640
Using AI to create memes
igorhalfeld
0
480
Deninho, the TS children
igorhalfeld
1
190
Micro Front-ends, what's anyone says...
igorhalfeld
0
320
CSS in JavaScripto, the anti-pattern that is good
igorhalfeld
1
82
Other Decks in Programming
See All in Programming
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
220
受託開発でGitLab CI を活用していく
xiombatsg
1
270
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
3
790
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
280
[SF Ruby, March 2024] Rails on Wasm
palkan
0
380
Netty Chicago Java User Group 2024-04-17
sullis
0
130
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
430
Javaエンジニアのための Nodejs/Nuxt3入門
hidekatsu_izuno
0
280
Hanami and htmx
bkuhlmann
0
190
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
8
2.1k
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
230
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
The Invisible Customer
myddelton
114
12k
Typedesign – Prime Four
hannesfritz
36
2.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
29
46k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
Imperfection Machines: The Place of Print at Facebook
scottboms
258
12k
Clear Off the Table
cherdarchuk
83
310k
Designing the Hi-DPI Web
ddemaree
276
33k
Transcript
GraphQl. Front-end queries made easy.
Igor Halfeld Software Engineer & Consultancy igorluiz.me - @IgorHalfeld
Conheça minha história. Onde tudo começou…
None
Objetivo. Onde eu quero chegar…
None
Vamos contextualizar. Como chegamos até aqui?
ZONA DARK SOAP REST #TRISTEZA #SEMCROSSFIT
"Analisarmos alternativas, como o REST. (…) Ficamos frustrados com as
diferenças entre os dados que queríamos e as requests que eram necessárias para obtê-los.” Lee Byron
2012. GraphQl é criado pelo Facebook apenas para uso interno.
2015. É liberado como open source!
Que rolê é esse?
Duas partes. Consumir no front-end e fazer no back-end. *dar
uma olhada nos conceitos antes.
GraphQl Server Data Sources Clients JSON bonitão lindão GraphQl Queries
Resolvers
None
REST tem vários endpoints em que cada um retorna dados
fixos. GraphQl tem um único endpoint que retorna uma estrutura flexível.
REST GET - /users/:id { “name”: “Igor Halfeld”, “email”: “
[email protected]
”,
“state”: “RJ" } GraphQl POST - /graphql { “data”: { “name”: “Igor Halfeld” } } { query { Users (id: “666") { name } } }
3 pilares. Query, Mutation, Subscription.
REST GET GraphQl POST PUT DELETE Query Mutations
{ query { users { name, email } } }
{ query { users (id: “666”) { name, email } } } GET - /users/:id GET - /users
{ mutation { createUser ( name: "Igor Luiz”, email: “
[email protected]
"
) { name, email } } } CREATE - /users { mutation { updateUser ( name: “Halfeld Igor” ) { name, email } } } PUT - /users/:id
{ mutation { deleteUser (id: “666”) { name, email }
} } DELETE - /users
None
O que muda no front é… Basicamente, saber fazer GraphQl
SDL.
type Users { name: String! email: String! skills: [String]! addresses:
[Address] } type Address { street: String, number: Number } GraphQl SDL (Schema Definition Language)
{ Query { users (id: “666”) { name, height (unit:
METERS) } } } Resolvers <3
{ Query { users { admin (role: ADMIN) { …userFields
} accountants (role: ACCOUNTANT) { …userFields } } } } fragment userFields on User { user, name } Fragments
{ Query { users ($id: ID) { name, email }
} } { id: “666" } Variables
Client de GraphQl. Se é tudo POST, eu posso usar
o axios, certo?
Sim, mas não! Você precisa! Justamente para aproveitar melhor os
benefícios do graphql.
None
Certeza que vai fazer a query de forma certa. Cache
built-it: performance. Consistência na UI: Cache reativo.
None
None
None
Como tamo agora?
None
None
None
Tooling. Ferramental daóra.
None
None
GraphQl faker.
GraphQl Voyager.
DEMO TIME!
bit.ly/demo-floripa
Obrigado! igorluiz.me/talks - @IgorHalfeld