【初心者向け】Rest API とは

プログラミング

業務で「Rest」を使った開発をするという話になったが、どういったものなのか全く知らなかったので
いろいろと調べてみました。

Rest API とは?

Rest の原則に沿った形で設計された API のこと。

Rest の原則とは?

ステートレスである

ステートレスとは、必要なデータを全て含んだ形で、リクエストすること。

※ステートフルな設計の例
「次のページへ遷移する」というリクエストを送信。
サーバ側でセッション管理された現在ページを確認し取得された2に1を加算し、
3ページ目の内容を返却する。

※ステートレスな設計の例
クライアントサイドで、現在ページの2に1を加算し
「3ページへ遷移する」というリクエストを送信。
サーバ側で3ページ目の内容を返却する。

リソース指向の設計

リソースとは、ひとかたまりの情報資源のこと。
テーブルのエンティティよりも、ユーケース図における操作の対象に近い。
「モノ」だけでなく「コト」もリソースとして捉える。

リソースへのアクセス

リソースへのアクセスには、プロトコル定義どおりににHTTPメソッドを使うこと。

HTTPメソッド名 説明 冪(べき)等性
Get リソースを取得 あり
Put リソースを追加(更新) あり
Delete リソースを削除 あり
Post リソースを作成 なし

冪(べき)等性とは?

同じリソースに対して、同じパラメータで、何度リクエストを繰り返しても、
同じリソース状態(※レスポンスではない事に注意)が得られること。

※冪等性があるイベントの例
お皿を綺麗に洗う。
→ 1度目の呼び出しでお皿は綺麗になり、レスポンスとして
「お皿を綺麗にしました」を返却。
→ 続けて2度目の呼び出しをした場合、既にお皿は綺麗なので、レスポンスとして
「お皿は綺麗です」を返却。

※冪等性がないイベントの例
お皿を半分に割る。
→ 1度目の呼び出しでお皿は2分割され、レスポンスとして
「お皿を半分に割りました」を返却。
→ 2度目の呼び出しでお皿は4分割され、レスポンスとして
「お皿を半分に割りました」を返却。

ルール

すべてのリソースを一意に識別するアドレスを持つ必要がある。
その他にも以下がある。

  • 大文字は使用しない
  • APIのバージョンを含める
  • 階層構造を利用し、論理的にリソースを表現する
  • 動詞は使わず、(複数形の)名詞を使う
  • 単語をつなげる場合は、ハイフンを使う
  • リソースの本質でないものは含めない
    例 (作者名 ../tarou/..、状態 ../latest/..、アクセス権 ../public/..、ファイル名の拡張子 ../hoge.cgi/..)

まとめてみましたが、上記のような感じだそうです。

タイトルとURLをコピーしました