Apidog

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

API設計

API仕様書生成

API設計

API Mock

APIテスト自動化

無料登録
Home / 操作ガイド / 完全解説:DjangoフレームワークでREST APIを作成

完全解説:DjangoフレームワークでREST APIを作成

Djangoは、Python言語で書かれたオープンソースのWebアプリケーションフレームワークとして、REST APIを構築するためのDjango REST Framework(DRF)を提供しています。本文では、Django REST Frameworkを使用して効率的にREST APIを作成する方法を皆さんに紹介します。

Djangoは、Python言語で書かれたオープンソースのWebアプリケーションフレームワークとして、REST APIを構築するためのDjango REST Framework(DRF)を提供しています。本文では、Django REST Frameworkを使用して効率的にREST APIを作成する方法を皆さんに紹介します。

また、多用途のAPI管理ツールのApidogをDjangoフレームワークと併用して、APIのテストやデバッグをより効率的に実現するソリューションをも一緒に紹介していきたいと思います。

button

DjangoとREST APIについて

REST API作成の際にDjangoはよく使われるフレームワークになります。この記事では、まずは、DjangoフレームワークとREST APIの基本情報を皆さんに紹介します。

Djangoフレームワークとは

DjangoはPython言語で書かれたオープンソースのWebアプリケーションフレームワークです。以下のような特徴があります。

  • MVC(Model-View-Controller)アーキテクチャを採用しているため、Webアプリケーション開発が効率的に行える
  • Object Relational Mapper(ORM)を内包しているため、データベースをPythonから扱いやすい
  • 管理サイト機能が標準装備されている
  • URLルーティング、ビュー、テンプレート、フォームなどのコンポーネントが揃っている
  • 国際化対応が容易
  • 大規模サイト構築にも対応可能な拡張性を備える

DjangoはYouTube、Instagram、Dropboxなどの大規模サイトでも利用されており、PythonによるWeb開発のためのデファクトスタンダードとして位置付けられています。初心者にも学習しやすい構造になっているため、Pythonを使ったWebアプリケーション開発の入門に適していると言えます。

Django

REST APIとは

REST(Representational State Transfer)は、Webサービスを設計・開発するためのアーキテクチャスタイルの1つです。REST APIとは、RESTの原則に従って設計されたWeb APIのことを指します。

REST APIの主な特徴は以下の通りです。

  • HTTPプロトコルをベースとする
  • 状態レスでクライアントのコンテキストをサーバーが保持しない
  • アドレスによってリソース(データ)を特定する
  • レスポンスに適切なステータスコードを用いる
  • 表現にXMLやJSONなどを用いる

REST APIはこれらの特徴により、スケーラブルで拡張しやすいAPIを実現できます。Web APIの開発においてはほぼ標準的なアーキテクチャと言えます。

Django REST Framework(DRF)について

Django REST Framework(DRF)は、DjangoでREST APIを構築するための強力な Toolkit です。DRFを使うことで、Djangoで高品質なREST APIを素早く開発できるようになります。大規模なAPI開発においてはデファクトスタンダードとして位置付けられています。その主な特徴は以下の通りです。

APIの構築を支援する様々なクラスとツールが用意

  • Serializerクラスでオブジェクトのシリアライズ/デシリアライズ
  • Viewsetクラスでビューの定義
  • 認証、パーミッション、スロットリングなどの機能

Web APIのベストプラクティスを反映した設計

  • HTTPメソッドの明示的なマッピング
  • ウェブブラウザからのブラウザビリティ
  • ハイパーリンク付きのAPI

Djangoの既存の機能との親和性が高い

  • Djangoの汎用ビューとシームレスに統合
  • Djangoの認証フレームワークと連携
  • 豊富なドキュメントと活発なコミュニティ

DjangoフレームワークでRESTful APIを作成する方法

それでは、DjangoフレームワークでRESTful APIを作成するには、どうしたらいいですか?次は、Django REST Frameworkを使って、RESTful APIを効率的に作成する操作手順を皆さんに紹介します。

REST APIのビルドを開始する前に、Pythonがパソコンにインストールされていることを確保する必要があります。それでは、次の操作手順を参照して、REST APIの作成を開始しましょう。

Step 1. DjangoとDjango REST Frameworkのインストール

まず、ターミナル、コマンドプロンプトなどのコマンドラインツールを利用して、Django、Django REST Frameworkをインストールします。

pip install django djangorestframework

Step 2. Djangoプロジェクトの作成

次のコマンドを利用して、プロジェクトファイルの保存用のプロジェクトディレクトリを作成します。

mkdir projectname

そして、次のコマンドを利用して、Djangoプロジェクトを初期化します。

django-admin startproject projectname

Step 3. プロジェクトディレクトリに移動

次のコマンドを利用して、作成したプロジェクトのディレクトリに移動します。

cd projectname

Step 4. Djangoアプリの作成

Djangoアプリを作成してAPIを実装します。

python manage.py startapp appname

Step 5. モデルの定義

models.pyでAPIで扱うデータのモデルを定義します。例えば、以下のようにItemモデルを定義できます。

from django.db import models

class Item(models.Model):

  name = models.CharField(max_length=100)

  description = models.TextField()

このモデルは2つのフィールドを持っています。

  • name - 100文字以下の文字列を保存できるCharField
  • description - 無制限のテキストを保存できるTextField

Step 6. マイグレーションの実行

マイグレーションを実行してデータベースのテーブルを作成します。

python manage.py makemigrations
python manage.py migrate

Step 7. シリアライザの作成

serializers.pyでモデルのシリアライザを定義します。例えば、次のようにrest_frameworkとモデルからSerializerをインポートしてItemSerializerクラスを定義できます。これはModelSerializerを継承したSerializerです。

from rest_framework import serializers
from .models import Item 

class ItemSerializer(serializers.ModelSerializer):  
 class Meta:    
  model = Item    
  fields = '__all__'

ここでは、モデルはItemに指定し、fieldsに__all__を設定することで、モデルの全フィールドをシリアライズの対象としています。

このSerializerをViewで使うことで、ItemオブジェクトをJSONなどの形式でシリアライズしたり、リクエストデータをデシリアライズしてItemオブジェクトを作成したりできるようになります。

Step 8. ViewSetによるビューの作成

views.pyでViewSetを使ってAPIのビューを定義します。

from rest_framework import viewsets
from .models import Item
from .serializers import ItemSerializer

class ItemViewSet(viewsets.ModelViewSet):
  queryset = Item.objects.all()
  serializer_class = ItemSerializer 

Step 9. URLの設定

urls.pyでビューとURLのマッピングを設定します。

from rest_framework import routers
from .views import ItemViewSet

router = routers.DefaultRouter()
router.register(r'items', ItemViewSet)

urlpatterns = router.urls

そして、プロジェクトのurls.pyでこれらのURLを全て含めるようにします。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
  path('admin/', admin.site.urls),
  path('api/', include('appname.urls')),
]

Step 10. 開発サーバの起動

開発サーバを起動してAPIにアクセスできるようにします。

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('appname.urls')),
]

APIのエンドポイントURLは、http://localhost:8000/api/items/のようなものになりますが、そのURLは自分の設定に従うものになります。そして、このエンドポイントのURLを利用して、ApidogなどのGUIのAPI管理ツールでより効率的にテストしたり、ドキュメント化したりすることができます。

対応するファイルを作成した後、プロジェクトのディレクトリは、次のように見えます:

Dajango RESTフレームワークのSerializers

Apidog:Djangoフレームワークに互換するAPI管理ツール

button

Django RESTフレームワークを使って、REST APIを作成すると、ApidogというDjangoフレームワークに完璧に互換なAPI管理ツールを使用することがおすすめです。Apidogを使うメリットは主に以下のような点があります。

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

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

  • APIドキュメントの作成が楽々

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

  • コラボレーションも楽々

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

  • APIテストの自動化もできる

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

  • 多機能

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

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

ApidogでDjangoフレームワークで作成したAPIを効率的に管理可能

それでは、Apidogという便利なGUIツールを使って、Djangoフレームワークで作成したAPIを簡単にテストしたり、管理したりする方法を皆さんに紹介します。

button

APIの単体テスト

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

APIの単体テスト

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

APIテストの自動化

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

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

まとめ

DjangoはPythonでのWebアプリケーション開発において、REST API構築でもデファクトスタンダードの位置づけにあるフレームワークです。Django REST Frameworkを使うことで、シンプルかつ直感的にREST APIを開発することができます。本記事では、Django REST Frameworkを使ったREST APIの開発手順を具体的に解説しました。モデルとシリアライザの定義から、ViewSetsによるビューの作成、URL設定等の一連の流れを理解することができました。

button

また、API開発を補完するツールとして、Apidogという使いやすいGUIツールがおすすめです。Apidogを使うことで、APIのテスト、ドキュメント作成、自動化などを効率的に行うことができ、Django単体では難しい開発プロセスをサポートしてくれます。

Apidogのニュースレターを購読する

今すぐ購読すると、いつでもApidogから更新情報と最新観点を手に入れることができます。