Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Implementing GraphQL with Laravel and Vue.js
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Alefe Souza
August 27, 2019
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Implementing GraphQL with Laravel and Vue.js
https://github.com/alefesouza/talk-laravel-vue-graphql
Alefe Souza
August 27, 2019
More Decks by Alefe Souza
See All by Alefe Souza
NativeScript: Native Apps with Angular
alefesouza
0
510
Implementing GraphQL with PHP - PHP Community Summit
alefesouza
0
330
React: Zero to Hero
alefesouza
2
540
Implementing GraphQL with PHP
alefesouza
0
610
Node.js Chatbots with Bot Framework
alefesouza
0
430
GraphQL: A new way to write APIs
alefesouza
0
460
Firebase as back-end
alefesouza
0
500
GitLab: A tool for the entire DevOps lifecycle.pdf
alefesouza
0
740
Web Components with Vanilla.js
alefesouza
0
700
Other Decks in Programming
See All in Programming
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
370
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
260
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
320
Webの地図
yosuke_furukawa
PRO
6
5k
mrbgem 三角測量 開発
ogom
0
160
AWSに止められる覚悟してますか?
morizo_1984
2
490
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
280
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
320
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
450
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
JRuby: Past, Present, and Future
headius
0
210
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
14
40k
Music & Morning Musume
bryan
48
7.4k
Speed Design
sergeychernyshev
33
2.1k
Become a Pro
speakerdeck
PRO
31
6.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Site-Speed That Sticks
csswizardry
13
1.5k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
BBQ
matthewcrist
89
10k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
A Tale of Four Properties
chriscoyier
163
24k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Transcript
Implementando GraphQL com Laravel e Vue.js
@alefesouza https://as.dev Alefe Souza Full Stack Developer @alefesouza Programador PHP
desde os 17 anos, instrutor de desenvolvimento de software, formado em análise e desenvolvimento de sistemas, Microsoft Specialist em tecnologias web.
GraphQL? Uma especificação de linguagem de consulta de APIs, desenvolvida
pelo Facebook. @alefesouza https://as.dev
@alefesouza https://as.dev Príncipios • Tipos • Queries • Mutations
Tipos Permitem especificar objetos de entrada e saída, impedindo a
requisição caso ocorra algo fora do padrão. @alefesouza https://as.dev
Queries Utilizadas para consultas no endpoint único, também é muito
fácil de solicitar apenas o que os campos necessários. @alefesouza https://as.dev
Mutations Utilizadas para realizar qualquer tipo de alteração nos dados,
equivalente ao POST, PUT, PATCH, DELETE, identificados pelo nome. @alefesouza https://as.dev
Onde funciona? @alefesouza https://as.dev
Onde funciona? @alefesouza https://as.dev
Implementação com Laravel @alefesouza https://as.dev $ composer install rebing/graphql-laravel $
php artisan vendor:publish --provider="Rebing\GraphQL\GraphQLServiceProvider"
Implementação no Vue.js @alefesouza https://as.dev $ npm install --save vue-apollo
graphql apollo-boost
Implementação no Vue.js @alefesouza https://as.dev import VueApollo from 'vue-apollo'; import
ApolloClient from 'apollo-boost'; import App from './App.vue'; Vue.use(VueApollo); const apolloClient = new ApolloClient(); const apolloProvider = new VueApollo({ defaultClient: apolloClient, }); new Vue({ el: '#app', apolloProvider, render: h => h(App), });
@alefesouza https://as.dev <ApolloQuery :query="require('./../gralphql/queries/fetchUsers.gql')" > <template v-slot="{ result: { loading,
error, data } }"> <!-- Loading --> <div v-if="loading" class="loading apollo">Carregando...</div> <!-- Error --> <div v-else-if="error" class="error apollo">Houve um erro</div> <!-- Result --> <div v-else-if="data" class="result apollo"> <ul> <li v-for="user in data.users" :key="user.id"> <b>Nome:</b> {{ user.name }}<br> <b>E-mail:</b> {{ user.email }}<br> <b>Empresa:</b> {{ user.company.name }} </li> </ul> </div> </template> </ApolloQuery>
@alefesouza https://as.dev <ApolloQuery :query="require('./../gralphql/queries/fetchUser.gql')" :variables="{ id: userId }" > <template
v-slot="{ result: { loading, error, data } }"> <!-- Loading --> <div v-if="loading" class="loading apollo">Carregando...</div> <!-- Error --> <div v-else-if="error" class="error apollo">Houve um erro</div> <!-- Result --> <div v-else-if="data" class="result apollo"> <b>Nome:</b> {{ data.user.name }}<br> <b>E-mail:</b> {{ data.user.email }}<br> <b>Empresa:</b> {{ data.user.company.name }} </div> </template> </ApolloQuery>
@alefesouza https://as.dev <ApolloMutation :mutation="require('../gralphql/mutations/addUser.gql')" :variables="{ input }" @done="onDone" > <template
v-slot="{ mutate, loading, error }"> <div> <div> <div>Nome:</div> <input type="text" v-model="input.name"> </div> <div> <div>E-mail:</div> <input type="text" v-model="input.email"> </div> <div> <div>ID da empresa:</div> <input type="number" v-model="input.company_id"> </div> </div> <button :disabled="loading" @click="mutate()">Salvar</button> <p v-if="error">Ocorreu um erro: {{ error }}</p> </template> </ApolloMutation>
Live Code! http://bit.ly/talk-laravel-vue-graphql @alefesouza https://as.dev
Obrigado!! @alefesouza https://as.dev http://bit.ly/talk-laravel-vue-graphql