Django REST Framework (DRF) はDjango Webフレームワークのための強力なWeb APIフレームワークです。PythonでWeb APIを開発する際、Django REST Framework (DRF) は定番のフレームワークになると言っても過言ではありません。そこで、本文では、Django REST Framework (DRF) のインストール方法、ディレクトリ構成、主なコンポーネントなどの基本情報をわかりやすく解説していきたいと思います。
また、Apidogという直感的なAPI管理ツールを使って、面倒なコード記述なしに直感的な操作によってAPIを呼び出す方法を一緒に紹介します。
Django REST Framework (DRF) とは?
Django REST Framework (DRF) はDjango Webフレームワークのための強力なWeb APIフレームワークです。RESTful APIの構築を迅速にするための多くの機能を提供しています。主な機能は以下の通りです:
- Web APIのための細かい制御が可能なViewクラス
- リクエストのシリアライズとレスポンスのデシリアライズ
- 認証ポリシーとパーミッションシステム
- スロットリング等のレート制限
- フィルタリング、オーダリング、ページネーション
- 利用しやすいWebブラウザブルAPI
- スキーマやドキュメント自動生成
DRFはDjangoのClass based viewsを拡張し、Web APIに特化した機能を提供します。RESTfulな設計を強制することで、APIの品質と一貫性を高めます。開発速度を上げるための多くのベストプラクティスも含まれています。DRFは柔軟性が高く、小規模なAPIから大規模なAPIまで対応できます。多くの人気WebサービスがDRFを利用していることからも、現代的なWeb API開発において非常に人気のあるフレームワークとなっています。
Django REST Frameworkのインストール方法
Django REST Frameworkの利用を開始する前に、まずそれをパソコンにインストールする必要があります。そこで、本文ではまずDjango REST Frameworkのインストール方法を紹介します。
Django REST Frameworkをインストールする前提として、Pythonがパソコンにインストールされる必要があります。Pythonをまだインストールしていない場合は、Pythonの公式サイトからまずPythonを取得してください。そして、次の手順を参照して、Django REST Frameworkをインストールしてください。
ステップ⒈次の pip
コマンドを使って、Django REST Framework及び関連のパッケージをインストールできます。
pip install djangorestframework
pip install markdown # browsable APIへのMarkdownサポート
pip install django-filter # フィルタリングのサポート
また、Gitコマンドを利用してGithubから次のプロジェクトをクローンすることでインストールすることもできます。
git clone https://github.com/encode/django-rest-framework
ステップ⒉ 次のコマンドを利用して、'rest_framework'
を INSTALLED_APPS
の設定に追加します。
INSTALLED_APPS = [
...
'rest_framework',
]
ステップ⒊browsable APIを使用したい場合、REST frameworkのログインとログアウトのビューを追加する必要があります。次の内容をルートの urls.py
ファイル中に追加します。
urlpatterns = [
...
path('api-auth/', include('rest_framework.urls'))
]
ご案内:URLのPathを自由に設定することができます。
ここで、Django REST Frameworkをパソコンにインストールすることができました。Django REST Frameworkを使ってREST APIを作成するには、次の記事をご参照ください:
Django REST Frameworkのディレクトリ構成
Django REST Frameworkの典型的なディレクトリ構成は以下のようになります:
api/
__init__.py
admin.py
apps.py
models.py
serializers.py
views.py
tests.py
config/
__init__.py
settings.py
urls.py
wsgi.py
project/
__init__.py
manage.py
- api/: REST APIのコードはここに置かれる
- api/serializers.py: リクエストとレスポンスのシリアライザー
- api/views.py: APIビューとビジネスロジック
- api/urls.py: APIエンドポイントのルーティング設定
- config/: 設定ファイル群
- config/settings.py: Django設定ファイル
- config/urls.py: プロジェクト全体のURL設定
- manage.py: Django管理スクリプト
appsとmodelsは使わない場合もあるため、必須ではありません。
この構成では、API関連のコードはapiアプリに隔離されており、他のDjangoアプリとは隔離されています。APIの拡張がしやすくなります。Django REST Frameworkはこの構成を推奨していますが、プロジェクトの要件に応じて自由に構成を変更可能です。
Django REST Frameworkの主なコンポーネント
Django REST Frameworkには、REST API開発を支援するための主要なコンポーネントがあります。主なコンポーネントは以下の通りです:
Serializer: リクエストとレスポンスのシリアライズを支援。モデルインスタンスやクエリセットをシリアライズし、レスポンスデータのフォーマットを定義できる。
Views: APIビューの基本クラス。大部分のロジックはここに書かれる。GenericAPIViewやViewSetなどの汎用ビューを提供。
Routers: 自動的にURLconfを生成するルーター。ViewSetsと組み合わせて使用。
Request: リクエストオブジェクトを拡張し、パーサークラスを追加する。
Response: レスポンスオブジェクトを拡張し、レンダラーを追加する。
Permissions: 認証ポリシーとパーミッション(権限)を定義できる。
Authentication: 各種認証スキーマ(Basic認証、Token認証など)を提供。
Throttling: リクエスト数のスロットリング(レート制限)を設定できる。
Filtering: クエリパラメータに基づく動的なオブジェクトフィルタリング。
これらのコンポーネントを組み合わせて使用することで、複雑なREST APIをも効率的に構築できます。
Apidog:Djangoフレームワークに互換するAPI管理ツール
Django RESTフレームワークを使って、REST APIを作成すると、ApidogというDjangoフレームワークに完璧に互換なAPI管理ツールを使用することがおすすめです。Apidogを使うメリットは主に以下のような点があります。
APIのテスト・デバッグがしやすい
Apidogを使うと、APIのリクエストを簡単に送信し、レスポンスを確認できます。開発段階ではDjangoの開発サーバーに対してテストを直感的で簡単に行えるので便利です。
Apidogを開き、リクエストを新規に作成すると、エンドポイントのURLを入力した上、必要なパラメータなどの情報を入力すると、簡単にリクエストを送信してレスポンスを取得できます。これにより、Djangoフレームワークで開発してきたAPIの疎通確認を簡単に行うことできます。
また、Apidogにレスポンスの「自動検証」という機能も備えています。この機能は、返されたレスポンスが事前に定義したステータスコードとデータ構造に一致しているかどうかをを自動的に判定することもできるので、テスト面から言うと、非常に便利です。
APIドキュメントの自動生成
ApidogでAPIのリクエストとレスポンスを保存しておくと、それを基にして、非常に綺麗なAPIドキュメント(API仕様書)を自動生成できます。
コラボレーションも楽々
Apidogのチーム機能を利用すると、APIの定義やテスト結果をチーム内でシームレスに共有できます。
APIテストの自動化
Apidogでテストのシナリオを作成して、作成したリクエストとAPIをテストステップに簡単に設定して自動テストを簡単に実現できます。
Apidogの自動テスト機能を使うことで、テストシナリオを簡単に作成できます。そして、テストシナリオで、保存したAPIとリクエストをテストステップとして追加することができます。そして、テストステップそれぞれの実行条件を個別にカスタマイズすることも可能です。最後に「実行」ボタンをクリックして、各APIを設定の条件に従って一つ一つ呼び出すことができます。
多機能
他にも、APIの認証、環境変数、前・後処理など、APIテストに必要な機能が揃っています。
確かに、Django REST Frameworkだけでは、API開発に不便な点がありますが、Apidogと併用することで補完できるため、API開発効率が大きく向上します。