Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Web API 完全に理解した 〜黎明編〜 / Web API Completely Understood -Dawn-
星影
January 30, 2020
Programming
1
3.3k
Web API 完全に理解した 〜黎明編〜 / Web API Completely Understood -Dawn-
「完全に理解した人達の「Web技術」Talk #1」の発表スライドです。
https://easy2.connpass.com/event/161840/
星影
January 30, 2020
Tweet
Share
More Decks by 星影
See All by 星影
技術選定完全に理解した
unsoluble_sugar
0
88
「未経験からエンジニア」でやり抜いた時の昔話 / no-experience-as-an-engineer-made-through
unsoluble_sugar
0
1.2k
Coursera完全に理解した / coursera-completely-understood
unsoluble_sugar
0
1.6k
歴史的経緯から学ぶVTuber超入門 / virtual-youtuber-super-introduction-to-learn-from-historical-background
unsoluble_sugar
0
420
Raspberry Pi完全に理解した / raspberry-pi-completely-understood
unsoluble_sugar
0
2k
リモート勉強会完全に理解した / study-meeting-online-completely-understood
unsoluble_sugar
0
2.5k
VMagicMirror完全に理解した / vmagicmirror-completely-understood
unsoluble_sugar
0
380
GAS + Spreadsheet + Slack API で レビュアーガチャを作ってみた / google-apps-script-spreadsheet-slack-api-reviewer-gacha
unsoluble_sugar
0
600
HTTPステータスコード 完全に理解した/http-status-code-perfectly-understood-dawn
unsoluble_sugar
0
1.6k
Other Decks in Programming
See All in Programming
React Nativeアプリを DDDで開発している話
nihemak
0
120
Baseline Profilesでアプリのパフォーマンスを向上させる / Improve app performance with Baseline Profiles
numeroanddev
0
250
Gitlab CIでMRを自動生成する
forcia_dev_pr
0
110
Chart実装が楽になりました。
keisukeyamagishi
0
120
短納期でローンチした新サービスをJavaで開発した話/launched new service using Java
eichisanden
6
1.9k
JSのウェブフレームワークで高速なルーターを実装する方法
usualoma
1
1.8k
Meet Swift Regex
usamik26
0
340
A Philosophy of Software Design 後半
yosuke_furukawa
PRO
10
2.8k
Node.jsデザインパターンを読んで
mmmommm
0
2.6k
Independently together: better developer experience & App performance
bcinarli
0
170
Get Ready for Jakarta EE 10
ivargrimstad
0
370
Android スキルセットをフル活用して始めるスマートテレビアプリ開発
satsukies
1
190
Featured
See All Featured
How to name files
jennybc
40
61k
Fantastic passwords and where to find them - at NoRuKo
philnash
27
1.5k
In The Pink: A Labor of Love
frogandcode
131
21k
GitHub's CSS Performance
jonrohan
1020
420k
How to Ace a Technical Interview
jacobian
265
21k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
12
920
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.6k
Music & Morning Musume
bryan
35
4.2k
GraphQLの誤解/rethinking-graphql
sonatard
28
6.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Git: the NoSQL Database
bkeepers
PRO
415
59k
Transcript
Web API શʹཧղͨ͠ ʙᴈ໌ฤʙ
@unsoluble_sugar TOPGATE, Inc. Leader/Engineer
Web API શʹཧղͯ͠·͔͢ʁ
ฉ͍ͨ͜ͱ͋Δ શʹཧղͨ͠ ԿΘ͔Βͳ͍ νϣοτσΩϧ
ฉ͍ͨ͜ͱ͋Δ શʹཧղͨ͠ ԿΘ͔Βͳ͍ νϣοτσΩϧ
֓ཁ • ର ฉ͍ͨ͜ͱ͋Δਓ • શʹཧղͨ͠ঢ়ଶʹͳΔͨΊͷೖฤ • ࡉ͔͍આ໌ল͖·͢ • ෆ෦ॻ੶WebͷใͰิͯ͠Ͷ
Web APIͱʁ
Web APIͱ • APIͱʮApplication Programming Interfaceʯͷུ • ֎෦͔ΒػೳΛར༻͢ΔͨΊͷΈ • HTTPϓϩτίϧΛ༻͍ͯɺωοτϫʔΫӽ͠ʹػೳΛݺͼग़͢
APIͷ͜ͱΛʮWeb APIʯͱݺͿ
ͲΜͳαʔϏεͰΘΕͯΔͷʁ
Web API͕ΘΕ͍ͯΔαʔϏε • GoogleɺAmazonɺTwitterɺFacebookɺetc… • ੈͷதʹWeb APIΛલఏͱͨ͠αʔϏε͕ᷓΕ͍ͯΔ χϡʔεɺఱؾɺਤɺSNSɺγϣοϐϯάɺήʔϜɺΤϯλϝͳͲͳͲ • αʔό௨৴Λߦ͏εϚϗΞϓϦͰར༻
• ެ։/ඇެ։ͷWeb API͕ଘࡏ
۩ମతʹʁ
Twitter APIͷ߹ • TwitterWeb APIΛఏڙ͍ͯ͠Δ • ։ൃऀWeb APIΛར༻ͯ͠Twitterͷ༷ʑͳػೳ͕͑Δ • ଟ͘ͷαʔυύʔςΟΫϥΠΞϯτ͕։ൃ͞Εൃల
• ࠷ۙ༻੍ݶ͕ݫ͍͠…
APIϦϑΝϨϯε https://developer.twitter.com/en/docs/api-reference-index
༷ৄࡉ͕ެ։͞Ε͍ͯΔ ։ൃऀAPIΛͬͯಠࣗͷΞϓϦWebαʔϏεΛ࡞Δ͜ͱ͕Ͱ͖Δ
࣮ࡍͷAPIͷಈ͖ʁ
ϢʔβʔλΠϜϥΠϯऔಘ HTTPϝιου GET Ϩεϙϯεܗࣜ JSON υϝΠϯ https://api.twitter.com ΤϯυϙΠϯτ /1.1/statuses/user_timeline.json ύϥϝʔλ
screen_name, count, include_rts, etc… ೝূ Bearer Token
APIϦΫΤετΛ͛Δͱ… $ curl "https://api.twitter.com/1.1/statuses/user_timeline.json? screen_name=unsoluble_sugar&count=10" -H "Authorization: Bearer <ACCESS_TOKEN>" |
jqɹ
λΠϜϥΠϯͷใ͕JSONͰऔಘͰ͖Δ { "created_at": "Sun Jan 19 12:33:32 +0000 2020", "id":
1218874129316638700, "id_str": "1218874129316638720", "text": "ϦΫΤετϔομʔͷAuthorizationͬͯɺຊޠͰදݱ͢Δͱʮೝূํࣜʯͱ͔Ͱྑ͍ͷ͔͠Β", }, "source": "<a href=\"https://about.twitter.com/products/tweetdeck\" rel=\"nofollow\">TweetDeck</a>", "user": { "id": 149069183, "id_str": "149069183", "name": "Ө", "screen_name": "unsoluble_sugar", "location": "ೋ࣍ݩ", "description": "Tech Hunterදɻશจݕࡧ/εϚϗήʔϜ/νϟοτbot/IoTͱ͔ͬͯΔࡶଟͳΤϯδχΞɻ࠷ۙPM݉ɻFlutter/GCP/FirebaseษڧதɻΨδΣΦλͰΞχ ΦλͰήʔΦλɻྦྷܭ1000ສPVͷݸਓϒϩάӡӦɻ2ࣇͷύύɻຊ୨ɿhttps://t.co/kGyfPuFvIO", "url": "https://t.co/h7Iq47ug5Z", "entities": { "url": { "urls": [ { "url": "https://t.co/h7Iq47ug5Z", "expanded_url": "https://unsolublesugar.com", "display_url": "unsolublesugar.com", …
ϨεϙϯεσʔλΛղੳͯ͠ը໘ʹө • πΠʔτใ textɿΫι͍ created_atɿSun Jan 19 12:33:32 +0000 2020
sourceɿTweetDeck • Ϣʔβʔใ user.profile_image_urlɿhttp://pbs.twimg.com/profile_images/1109649870594293766/AQHwKd6N_normal.jpg user.nameɿӨ user.screen_nameɿunsoluble_sugar
༷ʑͳใ͕APIͰऔಘͰ͖Δ • ϗʔϜλΠϜϥΠϯͷऔಘ GET statuses/home_timeline • ݸผπΠʔτͷऔಘ GET statuses/show/:id •
Ϧετͷऔಘ GET lists/list • ϑΥϩϫʔใҰཡͷऔಘ GET followers/list
GETҎ֎σʔλͷੜɺߋ৽ɺআ • πΠʔτͷߘ POST statuses/update • ը૾ͷΞοϓϩʔυ POST media/upload •
DMͷআ DELETE direct_messages/events/destroy • DMͷΣϧΧϜϝοηʔδมߋʢ͜Μͳػೳ͋ͬͨΜ͔…ʣ PUT direct_messages/welcome_messages/update
TwitterWeb APIͰग़དྷ͍ͯΔ
Web API
શʹཧղͨ͠ʁ
• HTTPϔομʔɺϘσΟʢϦΫΤετɾϨεϙϯεʣ • HTTPϝιου • ΤϯυϙΠϯτ • ΫΤϦετϦϯάʢURLύϥϝʔλʔʣ • URLΤϯίʔσΟϯά
• ϑΟϧλɺιʔτɺݕࡧɺϖʔδωʔγϣϯ • ೝূɺೝՄʢBasic, OAuth2, OpenID Connectʣ • ηογϣϯཧ • σʔλܕ • ग़ྗܗࣜʢJSON, XML, HTMLʣ • ΤϥʔϋϯυϦϯά • εςʔλείʔυʢ200, 404, 502ʣ • APIαʔόɺWebαʔό • όʔδϣϯཧ • ઃܭʢRESTfulʣ • ηΩϡϦςΟ
None
ࢀߟॻ੶ • WebΛࢧ͑Δٕज़ ᴷ HTTPɺURIɺHTMLɺͦͯ͠REST ࢁຊཅฏɹஶʢWEB+DB PRESS plusʣ 20104݄ ൃߦ
• Web API: The Good Parts ਫ و໌ɹஶʢΦϥΠϦʔδϟύϯʣ 201411݄ ൃߦ
Α͏ͦ͜ Web API ͷੈք