REST、ハイパーメディア、HATEOAS
あなたは「REST」という言葉を使いつづけている。あなたが考えている意味とは違うと思う。
— マイク・アムンゼン、REST fest 2012 基調講演。
まず最初に、免責事項。「Django REST framework」という名前は2011年初頭に決定され、開発者が見つけやすいようにするために選ばれました。ドキュメント全体を通して、私たちはよりシンプルで技術的に正しい「Web API」という用語を使用するように努めています。
ハイパーメディアAPIの設計に真剣に取り組んでいる場合は、このドキュメント以外の資料を参照して、設計の選択肢を検討する必要があります。
以下は「必読書」に分類されます。
- ロイ・フィールディングの論文 - アーキテクチャスタイルとネットワークベースソフトウェアアーキテクチャの設計。
- ロイ・フィールディングのブログ記事「REST APIはハイパーテキスト駆動型でなければならない」。
- レオナルド・リチャードソンとマイク・アムンゼンのRESTful Web API。
- マイク・アムンゼンのHTML5とNodeでハイパーメディアAPIを構築する。
- スティーブ・クラブニックのハイパーメディアAPIの設計。
- リチャードソン成熟度モデル。
より徹底的な背景については、クラブニックのハイパーメディアAPI読書リストをご覧ください。
REST frameworkを用いたハイパーメディアAPIの構築
REST frameworkは、不可知論的なWeb APIツールキットです。適切に接続されたAPIの構築を支援し、適切なメディアタイプの設計を容易にしますが、特定の設計スタイルを厳密に強制するものではありません。
REST frameworkが提供するもの
REST frameworkがハイパーメディアAPIの構築を可能にすることは自明です。それが提供するブラウザブルAPIは、Webのハイパーメディア言語であるHTML上に構築されています。
REST frameworkには、適切なメディアタイプの構築を容易にするシリアライゼーションとパーサー/レンダラーコンポーネント、適切に接続されたシステムを構築するためのハイパーリンクリレーション、コンテンツネゴシエーションの優れたサポートも含まれています。
REST frameworkが提供しないもの
REST frameworkが行わないことは、HAL、Collection+JSON、JSON API、HTML マイクロフォーマットなどの機械可読なハイパーメディアフォーマットをデフォルトで提供すること、あるいはハイパーメディアベースのフォーム記述と意味的にラベル付けされたハイパーリンクを含む完全なHATEOASスタイルのAPIを自動的に作成する機能を提供することです。そうすることは、API設計について、実際にはフレームワークの範囲外にとどまるべき、独断的な選択をすることを伴います。