🫥

DjangoとDRFを使ったWebAPIの作成

2024/05/27に公開

はじめに

今回は、書籍情報を管理するWebAPIを作ってみました。
基本的な機能しか備えていないですが、認証機能など様々な機能を追加していく予定です。

こんな人向け

・djangoのプロジェクト作成など基本的な操作が分かってる人
・個人開発の一環でWebAPIを作ってみたいけど、手が止まってる人

仕様の選定

1.目的と機能の決定
書籍情報管理APIを作成し、書籍の情報(タイトル、著者、出版年など)を管理する

2.エンドポイントの設計

  • GET /books:書籍の一覧を取得
  • POST /books:書籍を新規追加
  • GET /books/{id}:特定の書籍の情報を取得
  • PUT /books/{id}:特定の書籍の情報を更新
  • DELETE /books/{id}:特定の書籍を削除

環境のセットアップ

1.プロジェクト作成

python -m venv env
source env/bin/activate  # Windowsでは env\Scripts\activate
pip install django djangorestframework
django-admin startproject book_management
cd book_management
django-admin startapp books

2.設定の調整

INSTALLED_APPS = [
    ...
    'rest_framework',
    'books',
]

モデルの作成

1.モデル定義
books/models.pyに書籍情報を管理するためのモデルを定義します。

models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    published_year = models.IntegerField()

    def __str__(self):
        return self.title

2.マイグレーション

python manage.py makemigrations
python manage.py migrate

シリアライザーの作成

1.シリアライザー定義
books/serializers.pyにシリアライザーを定義します。

serializers.py
from rest_framework import serializers
from .models import Book

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'

ビューの作成

1.APIビュー定義
books/views.pyにビューを定義します。

views.py
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

ルーティングの設定

1.ルーティングの定義
books/urls.pyを作成し、ルーティングを定義します。

urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet

router = DefaultRouter()
router.register(r'books', BookViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

2.プロジェクトのurls.pyにインクルード

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

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

実行とテスト

1.サーバーの起動

python manage.py runserver

2.ブラウザで確認
ブラウザで'http://127.0.0.1:8000/api/books/' にアクセスし、APIが動作することを確認します。
以下の画面が出ていたら成功です。

まとめ

これで基本的なWebAPIの作成が完了しました。次のステップとしては、認証ですかね。

Discussion