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
Apollo Linkでできること
Search
piglovesyou
February 22, 2019
Technology
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apollo Linkでできること
piglovesyou
February 22, 2019
More Decks by piglovesyou
See All by piglovesyou
GraphQL Directiveを試してみた
piglovesyou
0
350
Other Decks in Technology
See All in Technology
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
280
Optunaの最新リリースv5.0について
pfn
PRO
0
120
Kiro Crewをはじめよう
kizawa2020
1
160
Local CI × GitHub Actions
gogutan
2
190
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
150
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
110
パッチ更新でterraform initが落ちた日
grimoh
1
140
Classmethod Company Deck
satoshi7
1
690
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
150
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
Metadata - Section 1: HTML Basics
mohab1
0
120
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
The Pragmatic Product Professional
lauravandoore
37
7.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Paper Plane
katiecoart
PRO
5
54k
RailsConf 2023
tenderlove
30
1.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
"QPMMP-JOLͰͰ͖Δ͜ͱ &*5ߴଜ
"QPMMP$MJFOUͱ"QPMMP-JOL "QPMMP-JOLͷجຊతͳಈ͖ ͢Ͱʹ͋Δ"QPMMP-JOL "QPMMP-JOLΛ͍ͬͯΕָ͕Ͱ͖ͨྫ
// Apollo Clientͷྫ client.query({ query: gql` query TodoApp { todos
{ id text completed } } `, }) .then(data => console.log(data)) .catch(error => console.error(error));
"QPMMP$MJFOUͱ"QPMMP-JOL IUUQTXXXBQPMMPHSBQIRMDPNEPDTMJOLPWFSWJFXIUNM͔ΒҾ༻ (SBQI2- $POTVNFS
"QPMMP$MJFOUͱ"QPMMP-JOL "QPMMP$MJFOU(SBQI2-$MJFOUͱͯ͠ͷΠϯλʔϑΣʔεΛ ఏڙʢϦΫΤετͳͲͷػೳͳ͍ʣɻ"QPMMP-JOLʹґଘ "QPMMP-JOLΫΤϦ࣌ͷϛυϧΣΞͱͯ͠ͷதͷػೳΛ ఏڙ ΫΤϦΛ࣮ͬͯࡍԿΛ͢Δ͔ʢϦΫΤετͳͲʣɺϨε ϙϯεΛͲ͏͍ͨ͠ͷ͔ʢΩϟογϡ·ͨผʣɺΤϥʔ ΛͲ͏͢Δ͔ "QPMMP-JOL൚༻తͰ3FMBZͳͲͰ͑ΔΑ͏࡞ΒΕ͍ͯΔ
௨ৗϛυϧΣΞͷྫ ΫΤϦɺϨεϙϯεͷՃ
// Ϩεϙϯεʹରͯ͠Կ͔͢Δྫ const link1 = new ApolloLink((operation, forward) => {
// GraphQLΫΤϦΛͬͯԿ͔͢Δ // ଞͷlinkͰ͏σʔλΛContextʹࡌͤΔ // forward() Ͱ࣍ͷlinkΛݺͿ return forward(operation).map(data => { // Ϩεϙϯεʹରͯ͠Կ͔͢Δ return {...data, additional: 'Ճͷ' }; }); });
// Ճ͑ͯΤϥʔʹରͯ͠Կ͔͢Δྫ const link2 = new ApolloLink((operation, forward) => {
// GraphQLΫΤϦΛͬͯԿ͔͢Δ // ଞͷlinkͰ͏σʔλΛContextʹࡌͤΔ return new Observable(observer => { return forward(operation).subscribe( data => { // Ϩεϙϯεʹରͯ͠Կ͔͢Δ observer.next({...data, additional: 'Ճͷ' }); }, error => { // GraphQLΤϥʔʹରͯ͠Կ͔͢Δ observer.error(error); }, (...args) => { // Finally } ); }); });
5FSNJOBUJOH-JOL ࣍ͷMJOLΛݺͳ͍ɻ αʔόϦΫΤετͳͲͯ͠ϛυϧΣΞνΣʔϯΛંΓฦ͢
IUUQTHJUIVCDPNBQPMMPHSBQIRMBQPMMPMJOLUSFFNBTUFSQBDLBHFTBQPMMPMJOLQVSQPTF ΑΓҾ༻ ંΓฦͯ͠Δ
// apollo-link-http ͷ؆қ࣮ྫ const httpLink = new ApolloLink(operation => {
return new Observable(observer => { const key = operation.toKey(); const query = key.slice(0, key.length - ‘|{}| null'.length); fetch(url, { method: 'POST', headers: { 'content-type': 'application/json', }, body: JSON.stringify({ operationName: operation.operationName, variables: operation.variables, query, }), }) .then(res => res.json()) .then(json => observer.next(json)) .catch(json => observer.error(json)) .finally(() => observer.complete()); }); });
// Apollo LinkνΣʔϯͷྫ const client = new ApolloClient({ link: ApolloLink.from([
link1, link2, httpLink, ]), cache, });
"QPMMP-JOLͷ0CTFSWBCMF3FBDUJWF&YUFOTJPOTΈ͍ͨɻ ࡉ͔͍༷෦Ͱ͍ͬͯΔ[FOPCTFSWBCMFΛΔͱΑͦ͞͏ɻ IUUQTHJUIVCDPN[FOQBSTJOH[FOPCTFSWBCMFPCTFSWBCMFTVCTDSJCFOFYUDBMMCBDL FSSPSDBMMCBDLDPNQMFUFDBMMCBDL
͢Ͱʹ͋Δ"QPMMP-JOL IUUQTXXXBQPMMPHSBQIRMDPNEPDTMJOLMJOLTMJTU IUUQTXXXBQPMMPHSBQIRMDPNEPDTMJOLMJOLT DPNNVOJUZIUNM
"QPMMP-JOLΛ͍ͬͯΕ ָ͕Ͱ͖ͨྫ
3FEVY͕ཁΒͳ͍ BQPMMPMJOLTUBUF ίϯϙʔωϯτ·ͨ͗Ͱ͏ঢ়ଶΛอ࣋ )551ӽ͠ͷσʔλͱಉ͡(SBQI2-ΫΤϦͰ͑Δ خ͠͞ ࠓͩͱ3FBDU)PPLTબࢶʢWʣ
3FTPMWFSͷڞ௨Τϥʔ Λॲཧ BQPMMPMJOLFSSPS ͜ΕΛΒͳ͔͕ͬͨͨΊʹ 3FTPMWFSΛԚ͠·ͬͨ͘͜ͱ͕͋Δ IUUQTHJUEFWMJOFDPSQDPN)35FDI NN@JNQSPWFQVMMpMFT
࿈ଓϦΫΤετΛ੍ BQPMMPMJOLCBUDI ࢼͯ͠Έͨʢಈըʣ ະݕূ͕ͩ*OQVU4DSFFOͰͷ ࿈ଧΫϥογϡ͕ Δ͔͠Εͳ͍
None
None
4FSWJDF8PSLFSΛͬͨ 8FC4PDLFU BQPMMPMJOLXTϝΠϯεϨουͰ84ͱଓ ͍ͭͰ04௨͢ΔͨΊʹ όοΫάϥϯυͰଓ͢Δඞཁ Ϋϩʔϯͯ͠վ͢ΕʢະݕূͰ͢ʣ
#JPHSBQIZ"1*Λ͏ BQPMMPMJOLSFTU BQPMMPMJOLIUUQͰઃఆͨ͠ΤϯυϙΠϯτͱ ผͷॴʹ3&45ϦΫΤετ͕Մೳ 3FTPMWFSͰؤுΔඞཁͳ͍
Ҏ্Ͱ͢ "QPMMP$MJFOUͱ"QPMMP-JOL "QPMMP-JOLͷجຊతͳಈ͖ ͢Ͱʹ͋Δ"QPMMP-JOL "QPMMP-JOLΛ͍ͬͯΕָ͕Ͱ͖ͨྫ