Open11

RESTなどの Web API設計について

まさぴょんまさぴょん

REST とは?

  • 「REST」とは何かというと、「シンプルなWebシステムの設計思想」のことです。
  • 「REST」は「REpresentational State Transfer」(リプレゼンテーショナル・ステイト・トランスファー)の略
    • Representational →具象化された
    • State →状態の
    • Transfer →転送
    • つまり、ざっくりと理解すると「具体的に状態を定義した情報のやり取り」のような意味合いになります。
  • これについて「RESTの4原則」というものがあり、これを満たすものを「RESTfulなシステム」と呼んだりします。

REST ful APIと、RESTの4原則とは?

  • このRESTの4原則は、HTTPを設計した中心人物であるRoy Fielding氏が2000年に提唱したもの
  • 次のような4つの原則があります。
    1. 統一インターフェース
    2. アドレス可能性
    3. 接続性
    4. ステートレス性

4つの簡単まとめ

①HTTP通信で,JSON形式でやりとりするよ → 統一インターフェース
②このURLの情報くださーい → アドレス可能性
③ハイパーリンクを含んだページをあげるよ → 接続性
④さっきの情報をくださいと言われても〜 → ステートレス性

1. 統一インターフェース

  • 統一インターフェースは、あらかじめ定義・共有された方法でやり取りされることです。
  • Webの場合、例えば「GET・POST・PUT・DELETE等のHTTPメソッドでやりとりするよ~」とか「やり取りするデータはJSON形式にしようね〜」といったものになります。
  • データの形式にはXML等もありますが、近年は軽量なJSON形式が使われることが多いです。
  • 同じリソースに対するAPIアクセスは、全て同じ形式で統一する(一意なURIでアクセス可能)。
  • またHTTPプロトコルのメソッド(GET,POST,PUT,DELETE等)を用いてのみ、データ操作を可能にする。
  • URIへの操作(GETやPOST)を統一することで、全体構成をシンプルにすることができる。

2. アドレス可能性

  • アドレス可能性は、全ての情報が一意なURI(識別子)を持っていて、提供する情報をURIで表現できることです。
  • このURIはUniformed Resource Identifierの略で、Webの場合は通常URLで与えられます。

3. 接続性

  • 接続性は、やりとりされる情報にはハイパーリンクを含めることができる、というものです。
  • 1つのリンクから別の情報にリンク(接続)することができて、RESTfulなシステム同士なら円滑に情報連携を行うことができます。

4. ステートレス性

  • ステートとは「状態」のことでしたね。これがレスなので「状態がない」ということになります。
  • つまり、RESTでは「やりとりが1回ごとに完結する」と理解することができます。
  • これは、前のやり取りの結果に影響を受けないのでシンプルな設計にできるというメリットがあります。(セッション管理が不要など)

参考・引用

https://tech.012grp.co.jp/entry/rest_api_basics

https://qiita.com/KNR109/items/d3b6aa8803c62238d990

https://qiita.com/mserizawa/items/b833e407d89abd21ee72

https://ja.wikipedia.org/wiki/KISSの原則