SlideShare a Scribd company logo
1 of 16
Download to read offline
RESTful API
⼊入⾨門
@Keisuke69
⾃自⼰己紹介
{
"Name"  :  "⻄西⾕谷圭介",
"Twitter"  :  "@Keisuke69",
"Profile"  :  {
”Company"  :  “Amazon  Web  Services  Japan",
“Role”  :  “Solutions  Architect”,
“Others”  :  [
“よく⾚赤いドクロの⼈人と⾔言われます”,
“好きな⾔言語は特にないけどRubyをよく使います”,
“フジロッカーです。サマソニよりフジロック派。  
              でもサマソニも毎年年⾏行行きます”,
“マンガ⼤大好き”
]
}
}
そもそも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
• 名詞で構成
– 表現するのはあくまでもリソースでありアクションではない
– URIのパス内に動詞が存在しないのが基本(名詞のみ)
Photo   credit: The   U.S.  National  Archives via Visual  Hunt / No   known   copyright  restrictions
ステートレス
• クライアントとサーバ間の接続に状態を持たな
い
• (理理想は)リクエストの1つ1つにそれを処理理す
るにあたって必要な情報を全て含むこと
• 状態を持たないのでスケーラビリティの確保が
容易易になる
例例:ステートフルなやり取り
いらっしゃいませ。○○バーガーへようこそ
ハンバーガーセットをください
サイドメニューはいかがなさいますか?
ポテトをください
ドリンクはいかがなさいますか?
はい
コーラをお願いします
以上でよろしいですか?
お会計は◯◯円になります
Photo  credit: skpy via Visual   Hunt / CC  BY-­SA
例例:ステートレスなやり取り
いらっしゃいませ。○○バーガーへようこそ
ハンバーガーセットをください
サイドメニューはいかがなさいますか?
ハンバーガーセットをポテトで
お願いします
ドリンクはいかがなさいますか?
ハンバーガーセットをポテトと
コーラでお願いします
ハンバーガーセットをポテトと
コーラでお願いします
以上でよろしいですか?
お会計は◯◯円になります
Photo  credit: skpy via Visual   Hunt / CC  BY-­SA
例例:ステートレスなやり取り
いらっしゃいませ。○○バーガーへようこそ
ハンバーガーセットをください
サイドメニューはいかがなさいますか?
ハンバーガーセットをポテトで
お願いします
ドリンクはいかがなさいますか?
ハンバーガーセットをポテトと
コーラでお願いします
ハンバーガーセットをポテトと
コーラでお願いします
以上でよろしいですか?
お会計は◯◯円になります
Photo  credit: skpy via Visual   Hunt / CC  BY-­SA
⾮非常に冗⻑⾧長だが、
状態を持たないため、  
都度度全てを伝える必要がある  
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
POST、PUTそしてPATCH
• POSTとPUTはともにリソースの作成が⾏行行える
– リソースの作成には⼀一般的にはPOSTを利利⽤用
– PUT
• クライアントが指定したURIのリソースを作成
• クライアント側でリソース名を作成する
• サーバ側の命名規則等を知っている必要がある(密結合と⾔言える)
• 冪等
– POST
• リソース名はサーバによって作成される
• クライアントが指定するURIはあくまでも親リソース
• サーバによって⼦子リソースのURIが作成される
• PUTとPATCH
– PUTは指定したリソース全体を更更新、PATCHはリソースの⼀一部を更更新
HTTPステータスコード
• 処理理の実⾏行行結果はHTTPステータスコードで表
現
– HTTPステータスコードに意図を込める
• 400系はクライアント系のエラー
– クライアントのリクエストに問題がある場合
– 指定されたリソースが⾒見見つからない、など
• 500系はサーバサイドのエラー
– サーバがリクエストの処理理を失敗した場合
Photo  credit: sanbeiji via VisualHunt / CC  BY-­SA
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
サーバ内部エラー 処理理中の例例外などサーバ側エラー全般
Thanks

More Related Content

What's hot

徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
Hiroshi Tokumaru
 

What's hot (20)

RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
Web API The Good Partsの紹介 ~美しいWebAPIの作り方~
Web API The Good Partsの紹介 ~美しいWebAPIの作り方~Web API The Good Partsの紹介 ~美しいWebAPIの作り方~
Web API The Good Partsの紹介 ~美しいWebAPIの作り方~
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
面白いセキュリティツール
面白いセキュリティツール面白いセキュリティツール
面白いセキュリティツール
 
Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニングLaravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
 
Spring HATEOAS
Spring HATEOASSpring HATEOAS
Spring HATEOAS
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティスコンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
 
ドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinxドキュメントを作りたくなってしまう魔法のツールSphinx
ドキュメントを作りたくなってしまう魔法のツールSphinx
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
 

Similar to RESTful API 入門

Similar to RESTful API 入門 (15)

Api meetup LT
Api meetup LTApi meetup LT
Api meetup LT
 
RestfulなAPIの設計のお話
RestfulなAPIの設計のお話RestfulなAPIの設計のお話
RestfulなAPIの設計のお話
 
PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!
 
RESTful Web API Design
RESTful Web API DesignRESTful Web API Design
RESTful Web API Design
 
REST API マスターへの道 - Office 365 パワーユーザー向け
REST API マスターへの道 - Office 365 パワーユーザー向けREST API マスターへの道 - Office 365 パワーユーザー向け
REST API マスターへの道 - Office 365 パワーユーザー向け
 
Spring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクトSpring'17リリースノート輪読会 API By フレクト
Spring'17リリースノート輪読会 API By フレクト
 
Custom Vision
Custom VisionCustom Vision
Custom Vision
 
Connect with Data API
Connect with Data APIConnect with Data API
Connect with Data API
 
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
 
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼうRESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
 
2014 08-30 life with roslyn
2014 08-30 life with roslyn2014 08-30 life with roslyn
2014 08-30 life with roslyn
 
Works of site reliability engineer
Works of site reliability engineerWorks of site reliability engineer
Works of site reliability engineer
 
Swiftのクロージャー
SwiftのクロージャーSwiftのクロージャー
Swiftのクロージャー
 
つながるデータShare
つながるデータShareつながるデータShare
つながるデータShare
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 

More from Keisuke Nishitani

More from Keisuke Nishitani (20)

Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
Serverless Anti-Patterns
Serverless Anti-PatternsServerless Anti-Patterns
Serverless Anti-Patterns
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
Tune Up AWS Lambda
Tune Up AWS LambdaTune Up AWS Lambda
Tune Up AWS Lambda
 
What's new with Serverless
What's new with ServerlessWhat's new with Serverless
What's new with Serverless
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
 
Introducing Amazon Rekognition, Amazon Polly and Amazon Lex
Introducing Amazon Rekognition, Amazon Polly and Amazon LexIntroducing Amazon Rekognition, Amazon Polly and Amazon Lex
Introducing Amazon Rekognition, Amazon Polly and Amazon Lex
 
What's new with Serverless
What's new with ServerlessWhat's new with Serverless
What's new with Serverless
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
 
Serverless Revolution
Serverless RevolutionServerless Revolution
Serverless Revolution
 
AWSのサーバレス関連アップデートを10分で紹介します
AWSのサーバレス関連アップデートを10分で紹介しますAWSのサーバレス関連アップデートを10分で紹介します
AWSのサーバレス関連アップデートを10分で紹介します
 
Introducing Serverless Computing (20160802)
Introducing Serverless Computing (20160802)Introducing Serverless Computing (20160802)
Introducing Serverless Computing (20160802)
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
 
クラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャクラウド時代のソフトウェアアーキテクチャ
クラウド時代のソフトウェアアーキテクチャ
 
AWS Lambda Updates
AWS Lambda UpdatesAWS Lambda Updates
AWS Lambda Updates
 
Building Scalable Application on the Cloud
Building Scalable Application on the CloudBuilding Scalable Application on the Cloud
Building Scalable Application on the Cloud
 
AWS Lambda / Amazon API Gateway Deep Dive
AWS Lambda / Amazon API Gateway Deep DiveAWS Lambda / Amazon API Gateway Deep Dive
AWS Lambda / Amazon API Gateway Deep Dive
 
Androidを中心に紐解くIoT
Androidを中心に紐解くIoTAndroidを中心に紐解くIoT
Androidを中心に紐解くIoT
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイントAWSで実現するクラウドネイティブなアプリ開発のポイント
AWSで実現するクラウドネイティブなアプリ開発のポイント
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without Servers
 

RESTful API 入門