Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

Django REST Frameworkとは?インストール、ディレクトリ構成などの基本を解説

Django REST Framework (DRF) はDjango Webフレームワークのための強力なWeb APIフレームワークです。PythonでWeb APIを開発する際、Django REST Framework (DRF) は定番のフレームワークになると言っても過言ではありません。そこで、本文では、Django REST Framework (DRF) のインストール方法、ディレクトリ構成、主なコンポーネントなどの基本情報をわかりやすく解説していきたいと思います。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

Django REST Framework (DRF) はDjango Webフレームワークのための強力なWeb APIフレームワークです。PythonでWeb APIを開発する際、Django REST Framework (DRF) は定番のフレームワークになると言っても過言ではありません。そこで、本文では、Django REST Framework (DRF) のインストール方法、ディレクトリ構成、主なコンポーネントなどの基本情報をわかりやすく解説していきたいと思います。

また、Apidogという直感的なAPI管理ツールを使って、面倒なコード記述なしに直感的な操作によってAPIを呼び出す方法を一緒に紹介します。

button

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を使うメリットは主に以下のような点があります。

button

APIのテスト・デバッグがしやすい

Apidogを使うと、APIのリクエストを簡単に送信し、レスポンスを確認できます。開発段階ではDjangoの開発サーバーに対してテストを直感的で簡単に行えるので便利です。

Apidogを開き、リクエストを新規に作成すると、エンドポイントのURLを入力した上、必要なパラメータなどの情報を入力すると、簡単にリクエストを送信してレスポンスを取得できます。これにより、Djangoフレームワークで開発してきたAPIの疎通確認を簡単に行うことできます。

APIの単体テスト

また、Apidogにレスポンスの「自動検証」という機能も備えています。この機能は、返されたレスポンスが事前に定義したステータスコードとデータ構造に一致しているかどうかをを自動的に判定することもできるので、テスト面から言うと、非常に便利です。

APIドキュメントの自動生成

ApidogでAPIのリクエストとレスポンスを保存しておくと、それを基にして、非常に綺麗なAPIドキュメント(API仕様書)を自動生成できます。

ApidogのAPI仕様書のサンプル
button

コラボレーションも楽々

Apidogのチーム機能を利用すると、APIの定義やテスト結果をチーム内でシームレスに共有できます。

APIテストの自動化

Apidogでテストのシナリオを作成して、作成したリクエストとAPIをテストステップに簡単に設定して自動テストを簡単に実現できます。

Apidogの自動テスト機能を使うことで、テストシナリオを簡単に作成できます。そして、テストシナリオで、保存したAPIとリクエストをテストステップとして追加することができます。そして、テストステップそれぞれの実行条件を個別にカスタマイズすることも可能です。最後に「実行」ボタンをクリックして、各APIを設定の条件に従って一つ一つ呼び出すことができます。

テストステップに条件を設定

多機能

他にも、APIの認証、環境変数、前・後処理など、APIテストに必要な機能が揃っています。

確かに、Django REST Frameworkだけでは、API開発に不便な点がありますが、Apidogと併用することで補完できるため、API開発効率が大きく向上します。

button

初心者必見!JavaのListと配列の基本と使い方観点

初心者必見!JavaのListと配列の基本と使い方

JavaのListは、柔軟で効率的なデータ操作を実現するための重要なクラスです。ArrayListやLinkedListを上手に使い分けることで、さまざまなシチュエーションに適したデータ処理が可能です。初心者でも基本的な使い方を学べば、データ操作を効率的に行えるようになります。

中村 拓也

12月 18, 2024

Base64とは?バイナリデータのエンコードとその使い方観点

Base64とは?バイナリデータのエンコードとその使い方

Base64は、バイナリデータをASCII文字列に変換する方法で、主に電子メールの添付ファイルやWebでの画像データ転送、APIでのデータ送信に使用されます。Base64エンコードによりデータの取り扱いが簡単になりますが、データサイズが約33%増加するため、注意が必要です。

中村 拓也

12月 18, 2024

INNER JOINを使いこなす:複数テーブルのデータ統合観点

INNER JOINを使いこなす:複数テーブルのデータ統合

INNER JOINは、複数のテーブルから関連するデータを結びつけ、より豊富な情報を得るために使用されます。非常に強力な機能であり、複雑なクエリを作成する際に欠かせない要素です。INNER JOINを適切に使い分けることで、効率的なデータ取得が可能になります.

中村 拓也

12月 12, 2024