【れすとまちゅりてぃもでる】

RESTマチュリティモデル とは?

最終更新:
💡 リソース・HTTP・次の操作へのリンクを段階で学ぶ

HTTP APIでリソース、HTTPメソッドやステータスコード、ハイパーメディアをどう使うかをLevel 0〜3で整理するモデル。Leonard Richardsonが提唱した。

📌 このページのポイント
HTTP APIの設計要素を段階で整理 Level 0 HTTPを通り道に POST /api 本文で操作を指定 Level 1 リソースを分ける /users/1 /orders/2 対象ごとにURLを用意 Level 2 HTTPの意味を使う GET /users/1 メソッド + 200・404など Level 3 次の操作を案内 予約の応答 → 取消リンク リンクの意味を理解してたどる 段階の高さだけでAPI全体の品質は決まらない
Richardson Maturity Model。各段階の追加要素を例示しています。RESTの全条件を判定する表ではありません。
ひよこ ひよこ
RESTマチュリティモデルって何を測るの?
ペンギン先生 ペンギン先生
RESTの考え方を学ぶために、HTTP APIの設計要素を4段階で整理するモデルだよ。Fowlerの解説でも、APIの総合的な成績を付ける道具としては勧めていないんだ。
ひよこ ひよこ
Level 0ってどんな状態?
ペンギン先生 ペンギン先生
たとえば /api という1つのURLにリクエストを送り、本文で操作を指定する形だね。HTTPは使っているけれど、リソースやメソッドの意味を十分に活かしていない。Level 1では /users/1 のように対象をURLで区別するよ。
ひよこ ひよこ
Level 2では何が加わるの?
ペンギン先生 ペンギン先生
取得にはGETを使うなど、HTTPメソッドの意味に従うんだ。さらに、作成できたら201、競合なら409といったステータスコードも使うよ。URLを分けるだけではLevel 2にならないんだ。
ひよこ ひよこ
Level 3のリンクって、普通のURLと違うの?
ペンギン先生 ペンギン先生
応答の中で「この予約は取消可能」「取消先はここ」と、次の操作を案内するのがポイントだよ。クライアントはそのリンクの意味を理解してたどる。単に無関係なURLを載せればよいわけではないよ。
ひよこ ひよこ
Level 3なら完璧なAPI?
ペンギン先生 ペンギン先生
このモデルだけでRESTの全条件や、使いやすさ・安全性まで判定できるわけではないよ。段階の意味を理解したうえで、利用者が必要な操作をできるか、認証やエラー処理は適切かも別に設計しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「RESTマチュリティモデル」って出てきたら「HTTP APIの設計要素を4段階で整理するモデル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Richardson Maturity Model」 = リチャードソン成熟度モデル
💬 提唱者のLeonard Richardsonの名前が付いていて、Maturityは「成熟度」という意味だよ

参考資料

← 用語集にもどる