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を実現できます。次は認証やフィルタリング、ページネーションなど、さらに実践的な機能を追加していくとよいでしょう。