Django REST framework API実装:環境構築

アイキャッチ画像

近年、フロントエンドとバックエンドの分離が進み、REST APIの重要性が高まっています。そんな中、Python製のWebフレームワーク「Django」でAPIを簡単に構築できるツールとして注目されているのが Django REST framework(以下DRF) です。本記事では、DRFの概要や基本的な使い方について紹介します。


REST APIとは?

REST APIとは、REpresentational State Transfer(状態を具体的に宣言して引き渡す)という設計原則に従って構築されたWeb APIのことです。シンプルで直感的な設計が特徴で、近年のWeb開発ではもっとも一般的なAPIの形式です。

RESTの基本的な考え方は、「URLはデータ(リソース)を表す住所であり、HTTPメソッド(GET、POSTなど)で操作する」というものです。たとえば次のような使い方をします。

  • GET /posts/:記事一覧を取得する
  • POST /posts/:新しい記事を投稿する
  • GET /posts/1/:IDが1の記事を取得する
  • PUT /posts/1/:IDが1の記事を更新する
  • DELETE /posts/1/:IDが1の記事を削除する

このように、リソースをURLで指定し、操作をHTTPメソッドで表現するのがRESTの基本スタイルです。

また、REST APIはサーバーとクライアントが完全に独立しており、モバイルアプリやフロントエンドのJavaScriptなど、あらゆるクライアントと連携しやすい点も大きな特徴です。これにより、バックエンドの機能を共通の仕組みで公開し、様々なアプリケーションとつなげることができます。

PythonでこのREST APIを効率よく構築するために用いられるのが「Django REST framework」です。次のセクションでは、このDRFがどのようにREST APIを簡単に作れるのかを紹介します。


Django REST frameworkとは?

Django REST frameworkは、DjangoでRESTfulなAPIを構築するための強力なライブラリです。以下のような特徴があります。

  • シリアライザーによるデータ変換
  • 認証・権限管理の仕組み
  • ページネーションやフィルタリング機能
  • Webブラウザで試せるAPIインターフェース

DRFを使うことで効率よくAPI開発を進めることができます。


環境構築とインストール

まずは、仮想環境を作成し、必要なパッケージをインストールします。

python -m venv envsource env/bin/activate  # Windowsなら env\Scripts\activatepip install django djangorestframework

次に、プロジェクトを作成し、DRFを有効化します。

django-admin startproject myprojectcd myprojectpython manage.py startapp blog

settings.py に以下を追加します:

INSTALLED_APPS = [    …    ‘rest_framework’,    ‘blog’,]

モデルとシリアライザーの作成

簡単なブログ記事モデルを定義します。

# blog/models.pyfrom django.db import models
class Post(models.Model):    title = models.CharField(max_length=100)    content = models.TextField()    created_at = models.DateTimeField(auto_now_add=True)

次に、シリアライザーを作成します。これはモデルのデータをJSONなどに変換する役割を担います。

# blog/serializers.pyfrom rest_framework import serializersfrom .models import Post
class PostSerializer(serializers.ModelSerializer):    class Meta:        model = Post        fields = ‘__all__’

ビューとURL設定

ビューを作成して、APIエンドポイントを公開します。

# blog/views.pyfrom rest_framework import viewsetsfrom .models import Postfrom .serializers import PostSerializer
class PostViewSet(viewsets.ModelViewSet):    queryset = Post.objects.all()    serializer_class = PostSerializer

URL設定も忘れずに行いましょう。

# blog/urls.pyfrom django.urls import path, includefrom rest_framework.routers import DefaultRouterfrom .views import PostViewSet
router = DefaultRouter()router.register(r’posts’, PostViewSet)
urlpatterns = [    path(”, include(router.urls)),]
# myproject/urls.pyfrom django.contrib import adminfrom django.urls import path, include
urlpatterns = [    path(‘admin/’, admin.site.urls),    path(‘api/’, include(‘blog.urls’)),]

マイグレーション

モデルの内容をデータベースに反映させるためのマイグレーションを実行。

python manage.py makemigrationspython manage.py migrate

サーバーの起動と動作確認

サーバーを起動して、ブラウザで http://localhost:8000/api/posts/ にアクセスしてみましょう。

python manage.py runserver

DRF独自のWeb UIが表示され、APIの送受信がブラウザ上で確認できます。


まとめ

Django REST frameworkを使えば、DjangoアプリケーションにREST APIを手軽に導入できます。シリアライザー、ViewSet、ルーターといったコンポーネントを活用することで、保守性と拡張性の高いAPIを実現できます。次は認証やフィルタリング、ページネーションなど、さらに実践的な機能を追加していくとよいでしょう。