Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
つ・な・が・り・た・い REST APIのお話 タピオカLT 2杯目 きり丸(nainaistar) 1
Slide 2
Slide 2 text
自己紹介 水上皓登:きり丸 twitter: @nainaistar github: hirotoKirimaru 通信会社所属 2
Slide 3
Slide 3 text
昔抱いていたRESTの認識 3
Slide 4
Slide 4 text
昔抱いていたRESTの認識 ❏ Ajax通信をやるために、RESTって技術使えばいいらしい。 画面表示後にデータ取ってこれる! 画面操作しても再リロードが走らない! だから、UXが向上する! すごいぞ、REST! 4
Slide 5
Slide 5 text
昔抱いていたRESTの認識 ❏ これは本の管理画面で使うREST APIだから、 本の追加は ”http://domain/bookManage/insertBook”、 本の更新・削除は ”http://domain/bookMange/updateBook”、 本管理画面RestController.javaだ! 5
Slide 6
Slide 6 text
6
Slide 7
Slide 7 text
(ちゃんと学んだ) 今のRESTの認識 7
Slide 8
Slide 8 text
REST ≒ REST API RESTの原則に従ったAPIのこと ▰ APIが一般的にアクセス可能な状態で提供されている ▰ APIのURLはリソースの場所を表現している ▰ リソースに対して、HTTPメソッドで取得、更新等の操作ができる (リソースの操作方法が一般化されている) ▰ APIの処理結果はステータスコードで判断できる ▰ ステートレスで、リクエストごとに独立している 8
Slide 9
Slide 9 text
APIのURLはリソースの場所を 表現している 9
Slide 10
Slide 10 text
例) 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
Slide 11
Slide 11 text
REST APIはリソース指向。 http://api.domain/books SOAP, gRPC等のRPCはサービス指向。 サービス名/メソッド名とかになる。 http://domain/bookManage/insertBook http://domain/bookManage/updateBook URLはリソースの場所を表現するので 名詞となるのが特徴 11
Slide 12
Slide 12 text
リソースに対して、 HTTPメソッドで取得、更新等の操作ができる (リソースの操作方法が一般化されている) 12
Slide 13
Slide 13 text
リソースに対して、HTTPメソッド で操作ができる 13 HTTP 機能 CRUD GET 取得 SELECT POST 更新(登録) UPDATE(INSERT) PUT 登録 INSERT DELETE 削除 DELETE PATCH 更新 UPDATE
Slide 14
Slide 14 text
❏ APIの処理結果は ステータスコードで判断できる ❏ APIが一般的にアクセス可能な状態で 提供されている 14
Slide 15
Slide 15 text
APIの処理結果は ステータスコード で判断できる 15 HTTP_STATUS 内容 100系 情報レスポンス 200系 成功 300系 リダイレクト 400系 クライアントエラー 500系 サーバエラー
Slide 16
Slide 16 text
SOAP(RPC)は? 16 SOAPの場合、多少のエラーがあっても、ステータスコードは200、 BODYにエラー内容を記載していることがある。 ステータスコードが200以外のパターンは、 リバースプロキシやApacheなどのシステムに繋がらない場合に返却することで、障害 を切り分けられるようにしている。 HTTPを隠蔽してJava等の言語レイヤーだけで 開発できるようにするという思想。(※Real world Http 141p)
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
ステートレスで、 リクエストごとに独立している 19
Slide 20
Slide 20 text
ステートレスで、 リクエストごとに 独立している 20 GETメソッドは、常に同じ値を返却する。(リソース更新が入らない限り) PUTメソッドは、常に同じ値を登録し続ける。 トランザクションを提供できないので、 トランザクションが必要な単位でなるべく細かいAPIにすることが大事。
Slide 21
Slide 21 text
その他 21
Slide 22
Slide 22 text
REST APIに向いているサービス 22
Slide 23
Slide 23 text
REST APIに向いている サービス 23 ▰ HTTPメソッドで操作しきれないサービス ▰ 例) DropboxはRESTからRPCの提供に変更 ▰ 複数のリソースに対してアクセスするAPI ▰ 例) ユーザの投稿、写真、ユーザの友達の写真等々の facebook, instagram等で試用されているGraphQL。
Slide 24
Slide 24 text
おわり 24
Slide 25
Slide 25 text
APPENDIX 25
Slide 26
Slide 26 text
26
Slide 27
Slide 27 text
参考ページ 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)
Slide 28
Slide 28 text
参考図書 28 Real world Http