【Django】Django REST Frameworkとは?まとめてみた


はじめに

 先日Djangoに入門した初心者です。やっとDjangoが何か、何ができるのかを少しわかってきたつもりなのにさらにRESTとか出てきて、???って感じです。ということで、Django REST Frameworkとは何なのか、何ができるのか、Djangoと何が違うのか、をまとめていきます。

Django REST Framework(DRF)とは?

 DjangoはPythonでWebアプリケーションを作るためのフレームワークであり、Webアプリケーションに必要なコンポーネントやAPIを多数提供している。しかし、REST APIバックエンドを構築するには、足りない機能がある。そこで、REST APIバックエンドを構築することに特化したDjangoパッケージであるDRFが登場した。

REST APIってなんだ???ってことでまずRESTの定義を。

REpresentational State Transfer(REST)の略で、分散ハイパーメディアシステムのための設計原則の1つである。

REST APIとは、RESTを適用したWeb APIのことである。URLですべてのリソースを一意に表し、サーバーセッションなどの状態を持たない(ステートレス)。HTTPメソッドでリソースへの操作を体系的に表し、同じURLに対する呼び出しには同じ結果が返される。

DRFには、例えば以下の機能がデフォルトで含まれている。

  • 認証
  • パーミッション(アクセス制御)
  • フィルタリング(クエリ文字列での検索)
  • ページネーション(ページ表示に対応したJSONレスポンス)
  • スロットリング(利用回数制限)

DRFプロジェクトの構成

 DRFプロジェクトの構成は、通常のDjangoプロジェクトの構成とは異なる部分がある。

  • Model(データベースのテーブルに対応)
  • Serializer(JSONデータとモデルの紐付け)
  • View(APIに対応したレスポンス)
  • URLconf(URLパターンの管理)

ModelとURLconfについては、通常のDjangoの場合とほぼ同じと考えて良い。ViewはDRF用の前処理なども行う。Serializerは、データを保持するためのもの。

まとめ

DRFは、RESTに則ったWebアプリケーションをつくるためにDjangoを補ったパッケージであり、拡張された機能のためにプロジェクトの構成も一部異なっている。