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
つ・な・が・り・た・い REST_APIのお話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kirimaru
October 07, 2019
Programming
2.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
つ・な・が・り・た・い REST_APIのお話
kirimaru
October 07, 2019
More Decks by kirimaru
See All by kirimaru
早くAPI作るならFastAPI がオススメ
hirotokirimaru
1
140
DDD(ドメイン駆動設計)を知らない人に知ったつもりさせる/Introduce_DDD_to_unfamiliar_individuals
hirotokirimaru
0
400
例示! Spring Bootで作られた REST APIのテストコード/ Testing-Example-for-a-REST-API-created-with-Spring-Boot
hirotokirimaru
2
2.3k
一緒に使うことが多い値は別クラスにしよう(Data Clumps)/data_clumps_is_useful
hirotokirimaru
0
840
Backlogが好きな話。/i_like_backlog
hirotokirimaru
0
200
私が好きなポートアンドアダプターを紹介する/I-like-hexagonal-architecture.pdf
hirotokirimaru
1
1.5k
名付けのためにクラス図を元に会話しよう/Let's-use-class-diagram-to-communicate-with-client
hirotokirimaru
0
700
Code Smellsの Primitive Obsession に気を付けて設計する/Designing-with-Code-Smells-Primitive-Obsession
hirotokirimaru
1
3.9k
FCCを推す/My favorite software architecture is FCC
hirotokirimaru
0
310
Other Decks in Programming
See All in Programming
Java 27新機能 / Java 27 new features
kishida
2
150
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
120
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
520
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
250
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
300
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
350
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
220
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
Webの地図
yosuke_furukawa
PRO
6
4.6k
JRuby: Past, Present, and Future
headius
0
160
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
420
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.3k
Crafting Experiences
bethany
1
350
The Pragmatic Product Professional
lauravandoore
37
7.4k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Code Review Best Practice
trishagee
74
20k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
A Modern Web Designer's Workflow
chriscoyier
699
190k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
760
Music & Morning Musume
bryan
48
7.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
Transcript
つ・な・が・り・た・い REST APIのお話 タピオカLT 2杯目 きり丸(nainaistar) 1
自己紹介 水上皓登:きり丸 twitter: @nainaistar github: hirotoKirimaru 通信会社所属 2
昔抱いていたRESTの認識 3
昔抱いていたRESTの認識 ❏ Ajax通信をやるために、RESTって技術使えばいいらしい。 画面表示後にデータ取ってこれる! 画面操作しても再リロードが走らない! だから、UXが向上する! すごいぞ、REST! 4
昔抱いていたRESTの認識 ❏ これは本の管理画面で使うREST APIだから、 本の追加は ”http://domain/bookManage/insertBook”、 本の更新・削除は ”http://domain/bookMange/updateBook”、 本管理画面RestController.javaだ! 5
6
(ちゃんと学んだ) 今のRESTの認識 7
REST ≒ REST API RESTの原則に従ったAPIのこと ▰ APIが一般的にアクセス可能な状態で提供されている ▰ APIのURLはリソースの場所を表現している ▰
リソースに対して、HTTPメソッドで取得、更新等の操作ができる (リソースの操作方法が一般化されている) ▰ APIの処理結果はステータスコードで判断できる ▰ ステートレスで、リクエストごとに独立している 8
APIのURLはリソースの場所を 表現している 9
例) https://api.github.com/users/hirotoKirimaru/ https://api.github.com/users/hirotoKirimaru/repos ただし、検索に関してはsearchという文言が入ることがある https://api.github.com/search/code?q=readme+user:hirotoKirimaru (※) URLはリソースの場所を表現するので 名詞となるのが特徴 10
REST APIはリソース指向。 http://api.domain/books SOAP, gRPC等のRPCはサービス指向。 サービス名/メソッド名とかになる。 http://domain/bookManage/insertBook http://domain/bookManage/updateBook URLはリソースの場所を表現するので 名詞となるのが特徴
11
リソースに対して、 HTTPメソッドで取得、更新等の操作ができる (リソースの操作方法が一般化されている) 12
リソースに対して、HTTPメソッド で操作ができる 13 HTTP 機能 CRUD GET 取得 SELECT POST
更新(登録) UPDATE(INSERT) PUT 登録 INSERT DELETE 削除 DELETE PATCH 更新 UPDATE
❏ APIの処理結果は ステータスコードで判断できる ❏ APIが一般的にアクセス可能な状態で 提供されている 14
APIの処理結果は ステータスコード で判断できる 15 HTTP_STATUS 内容 100系 情報レスポンス 200系 成功
300系 リダイレクト 400系 クライアントエラー 500系 サーバエラー
SOAP(RPC)は? 16 SOAPの場合、多少のエラーがあっても、ステータスコードは200、 BODYにエラー内容を記載していることがある。 ステータスコードが200以外のパターンは、 リバースプロキシやApacheなどのシステムに繋がらない場合に返却することで、障害 を切り分けられるようにしている。 HTTPを隠蔽してJava等の言語レイヤーだけで 開発できるようにするという思想。(※Real world
Http 141p)
None
None
ステートレスで、 リクエストごとに独立している 19
ステートレスで、 リクエストごとに 独立している 20 GETメソッドは、常に同じ値を返却する。(リソース更新が入らない限り) PUTメソッドは、常に同じ値を登録し続ける。 トランザクションを提供できないので、 トランザクションが必要な単位でなるべく細かいAPIにすることが大事。
その他 21
REST APIに向いているサービス 22
REST APIに向いている サービス 23 ▰ HTTPメソッドで操作しきれないサービス ▰ 例) DropboxはRESTからRPCの提供に変更 ▰
複数のリソースに対してアクセスするAPI ▰ 例) ユーザの投稿、写真、ユーザの友達の写真等々の facebook, instagram等で試用されているGraphQL。
おわり 24
APPENDIX 25
26
参考ページ 27 ▰ https://www.w3.org/TR/soap/ soapは1.2が最新 ▰ Restはとくにない? ▰ https://github.com/graphql/graphql-js/releases graphQLはv14.5.8?
▰ https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md gRPCは1.24が最新_1.25のgは(game)
参考図書 28 Real world Http