Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
RESTful API
⼊入⾨門
@Keisuke69
⾃自⼰己紹介
{
"Name"  :  "⻄西⾕谷圭介",
"Twitter"  :  "@Keisuke69",
"Profile"  :  {
”Company"  :  “Amazon  Web  Services  Japan",
“R...
そもそもRESTって?
RESTとは
• Representational  State  Transfer
• Roy  Fieldingが提唱したWebのソフトウェア
アーキテクチャの1つ
• RESTの原則に則ったAPIをRESTful APIという
RESTの特徴
• リソース指向
• URIによるリソースの識識別
• ステートレス
• HTTPメソッドを利利⽤用した操作
リソース指向
• リソースとは名前を持つあらゆる情報のこと
– 東京の天気
– 今⽇日のニュース
– Amazonの株価
• 全てのリソースはURIで表現する
– URIがリソースそのものを⽰示す
– URIとは1対1の関係
• 時間、条件によ...
URI
• Uniform  Resource  Identifier
• リソースを特定するもの
– 例例)https://api.example.com/resouces/1234
• 名詞で構成
– 表現するのはあくまでもリソースでありア...
ステートレス
• クライアントとサーバ間の接続に状態を持たな
い
• (理理想は)リクエストの1つ1つにそれを処理理す
るにあたって必要な情報を全て含むこと
• 状態を持たないのでスケーラビリティの確保が
容易易になる
例例:ステートフルなやり取り
いらっしゃいませ。○○バーガーへようこそ
ハンバーガーセットをください
サイドメニューはいかがなさいますか?
ポテトをください
ドリンクはいかがなさいますか?
はい
コーラをお願いします
以上でよろしいですか?
お...
例例:ステートレスなやり取り
いらっしゃいませ。○○バーガーへようこそ
ハンバーガーセットをください
サイドメニューはいかがなさいますか?
ハンバーガーセットをポテトで
お願いします
ドリンクはいかがなさいますか?
ハンバーガーセットをポテトと...
例例:ステートレスなやり取り
いらっしゃいませ。○○バーガーへようこそ
ハンバーガーセットをください
サイドメニューはいかがなさいますか?
ハンバーガーセットをポテトで
お願いします
ドリンクはいかがなさいますか?
ハンバーガーセットをポテトと...
HTTPメソッド
• URIで⽰示すリソースに対して何を⾏行行うかで利利⽤用するメ
ソッドを選択する
• HTTPで定義されているメソッドを利利⽤用
• GET/POST/PUT/DELETEおよびPATCHを主に利利⽤用する
HTTPメソッド...
POST、PUTそしてPATCH
• POSTとPUTはともにリソースの作成が⾏行行える
– リソースの作成には⼀一般的にはPOSTを利利⽤用
– PUT
• クライアントが指定したURIのリソースを作成
• クライアント側でリソース名を作成す...
HTTPステータスコード
• 処理理の実⾏行行結果はHTTPステータスコードで表
現
– HTTPステータスコードに意図を込める
• 400系はクライアント系のエラー
– クライアントのリクエストに問題がある場合
– 指定されたリソースが⾒見見...
HTTPステータスコード
HTTPステータスコード 意味 例例
200  OK リクエストに成功し、情報とともにレスポンスを返す場合 GETによるリソース情報の参照
201  CREATED リクエストは成功し、新しく作成されたリソースが返され...
Thanks
Upcoming SlideShare
Loading in …5
×

RESTful API 入門

8,610 views

Published on

先日のLTで使用した資料です

Published in: Software

RESTful API 入門

  1. 1. RESTful API ⼊入⾨門 @Keisuke69
  2. 2. ⾃自⼰己紹介 { "Name"  :  "⻄西⾕谷圭介", "Twitter"  :  "@Keisuke69", "Profile"  :  { ”Company"  :  “Amazon  Web  Services  Japan", “Role”  :  “Solutions  Architect”, “Others”  :  [ “よく⾚赤いドクロの⼈人と⾔言われます”, “好きな⾔言語は特にないけどRubyをよく使います”, “フジロッカーです。サマソニよりフジロック派。                でもサマソニも毎年年⾏行行きます”, “マンガ⼤大好き” ] } }
  3. 3. そもそもRESTって?
  4. 4. RESTとは • Representational  State  Transfer • Roy  Fieldingが提唱したWebのソフトウェア アーキテクチャの1つ • RESTの原則に則ったAPIをRESTful APIという
  5. 5. RESTの特徴 • リソース指向 • URIによるリソースの識識別 • ステートレス • HTTPメソッドを利利⽤用した操作
  6. 6. リソース指向 • リソースとは名前を持つあらゆる情報のこと – 東京の天気 – 今⽇日のニュース – Amazonの株価 • 全てのリソースはURIで表現する – URIがリソースそのものを⽰示す – URIとは1対1の関係 • 時間、条件によって「状態」は変わり得るが、その 「意味」は変わることはない
  7. 7. URI • Uniform  Resource  Identifier • リソースを特定するもの – 例例)https://api.example.com/resouces/1234 • 名詞で構成 – 表現するのはあくまでもリソースでありアクションではない – URIのパス内に動詞が存在しないのが基本(名詞のみ) Photo   credit: The   U.S.  National  Archives via Visual  Hunt / No   known   copyright  restrictions
  8. 8. ステートレス • クライアントとサーバ間の接続に状態を持たな い • (理理想は)リクエストの1つ1つにそれを処理理す るにあたって必要な情報を全て含むこと • 状態を持たないのでスケーラビリティの確保が 容易易になる
  9. 9. 例例:ステートフルなやり取り いらっしゃいませ。○○バーガーへようこそ ハンバーガーセットをください サイドメニューはいかがなさいますか? ポテトをください ドリンクはいかがなさいますか? はい コーラをお願いします 以上でよろしいですか? お会計は◯◯円になります Photo  credit: skpy via Visual   Hunt / CC  BY-­SA
  10. 10. 例例:ステートレスなやり取り いらっしゃいませ。○○バーガーへようこそ ハンバーガーセットをください サイドメニューはいかがなさいますか? ハンバーガーセットをポテトで お願いします ドリンクはいかがなさいますか? ハンバーガーセットをポテトと コーラでお願いします ハンバーガーセットをポテトと コーラでお願いします 以上でよろしいですか? お会計は◯◯円になります Photo  credit: skpy via Visual   Hunt / CC  BY-­SA
  11. 11. 例例:ステートレスなやり取り いらっしゃいませ。○○バーガーへようこそ ハンバーガーセットをください サイドメニューはいかがなさいますか? ハンバーガーセットをポテトで お願いします ドリンクはいかがなさいますか? ハンバーガーセットをポテトと コーラでお願いします ハンバーガーセットをポテトと コーラでお願いします 以上でよろしいですか? お会計は◯◯円になります Photo  credit: skpy via Visual   Hunt / CC  BY-­SA ⾮非常に冗⻑⾧長だが、 状態を持たないため、   都度度全てを伝える必要がある  
  12. 12. HTTPメソッド • URIで⽰示すリソースに対して何を⾏行行うかで利利⽤用するメ ソッドを選択する • HTTPで定義されているメソッドを利利⽤用 • GET/POST/PUT/DELETEおよびPATCHを主に利利⽤用する HTTPメソッド 意味 CRUDとの対応 GET リソースの取得 READ POST ⼦子リソースの作成 CREATE PUT リソースの更更新(既存URI) リソースの作成(新規URI) UPDATE CREATE DELETE リソースの削除 DELETE PATCH リソースの部分更更新 UPDATE Photo  credit: Yu.  Samoilov via VisualHunt.com / CC  BY
  13. 13. POST、PUTそしてPATCH • POSTとPUTはともにリソースの作成が⾏行行える – リソースの作成には⼀一般的にはPOSTを利利⽤用 – PUT • クライアントが指定したURIのリソースを作成 • クライアント側でリソース名を作成する • サーバ側の命名規則等を知っている必要がある(密結合と⾔言える) • 冪等 – POST • リソース名はサーバによって作成される • クライアントが指定するURIはあくまでも親リソース • サーバによって⼦子リソースのURIが作成される • PUTとPATCH – PUTは指定したリソース全体を更更新、PATCHはリソースの⼀一部を更更新
  14. 14. HTTPステータスコード • 処理理の実⾏行行結果はHTTPステータスコードで表 現 – HTTPステータスコードに意図を込める • 400系はクライアント系のエラー – クライアントのリクエストに問題がある場合 – 指定されたリソースが⾒見見つからない、など • 500系はサーバサイドのエラー – サーバがリクエストの処理理を失敗した場合 Photo  credit: sanbeiji via VisualHunt / CC  BY-­SA
  15. 15. HTTPステータスコード HTTPステータスコード 意味 例例 200  OK リクエストに成功し、情報とともにレスポンスを返す場合 GETによるリソース情報の参照 201  CREATED リクエストは成功し、新しく作成されたリソースが返される POSTによるリソース作成 204  NO  CONTENT リクエストに成功したが、レスポンスのエンティティが何も ない場合 DELETEによる削除 400  BAD  REQUEST リクエスト不不正。クライアントのリクエストがおかしい場合 定義されていないメソッドを使⽤用した 場合やリクエストボディのJSON フォーマットがおかしい場合 401 UNAUTHORIZED 認証が必要 認証が必要なURLに対して、未認証で アクセスした場合 403  FORBIDDEN リソースへのアクセスが拒否された アクセス権のないリソースにアクセス した場合 404  NOT  FOUND リソースが⾒見見つからなかった場合 存在しないリソースへのGET 409  CONFRICT 現在のリソースと競合する場合 作成・更更新しようとしたデータがユ ニーク制約等でエラーになる場合 500  INTERNAL   SERVER  ERROR サーバ内部エラー 処理理中の例例外などサーバ側エラー全般
  16. 16. Thanks

×