🎃
DjangoでシンプルなRESTful Web APIを作成してみた
Django REST frameworkを使用して、シンプルなRESTful Web APIを作成する方法について説明します。この記事では、TodoリストのAPIを例に、モデルのシリアライザ作成の理由に触れながら、APIの作成手順を説明し、Postmanでの動作確認方法も紹介します。
前提条件
- Pythonがインストールされていること
- Djangoがインストールされていること
モデルの作成
まず、シンプルなモデルを作成します。ここでは、Todoリストのモデルを作成します。
myapp/models.pymyapp
from django.db import models
class Todo(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
シリアライザの作成
シリアライザは、モデルインスタンスとJSONなどのデータ形式との変換を行うために使用されます。APIはクライアントとサーバー間でデータをやり取りするため、モデルをシリアライズする必要があります。これにより、データを簡単に送受信できる形式に変換します。
myapp/serializers.py
from rest_framework import serializers
from .models import Todo
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = '__all__'
ビューの作成
ビューセットを使用して、APIのエンドポイントを作成します。ビューセットは複数のビューをまとめて管理するのに便利です。
myapp/views.py
from rest_framework import viewsets
from .models import Todo
from .serializers import TodoSerializer
class TodoViewSet(viewsets.ModelViewSet):
queryset = Todo.objects.all()
serializer_class = TodoSerializer
ルーティングの設定
ルーティングを設定して、ビューセットへのアクセスURLを指定します。
myapp/urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from myapp.views import TodoViewSet
router = routers.DefaultRouter()
router.register(r'todos', TodoViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(router.urls)),
]
マイグレーションの実行
python manage.py makemigrations
python manage.py migrate
サーバーの起動
開発サーバを起動します。
python manage.py runserver
これで、'http://127.0.0.1:8000/api/todos/' でTodoリストのAPIにアクセスできるようになります。このAPIでは、GET、POST、PUT、DELETEリクエストを使ってTodoアイテムを操作できます。
Postmanでの動作確認
- Postmanのインストールと起動
- Postmanをダウンロードし、インストールします。インストールが完了したら、Postmanを起動します。
- GETリクエストの送信
- Postmanで新しいリクエストを作成し、'http://127.0.0.1:8000/api/todos/' にGETリクエストを送信します。
- 初回は空のリストが返ってきます。
- POSTリクエストの送信
- POSTリクエストを選択し、'http://127.0.0.1:8000/api/todos/' に以下のようなJSONデータを送信します。
{
"title": "Sample Todo",
"description": "This is a sample todo item.",
"completed": false
}
実際の画面は以下のような感じになると思います。
- リクエストを送信すると、新しいTodoアイテムが作成されます。
こんな感じで結果が返ってくるはずです。
- GETリクエストで確認
- 再度GETリクエストを送信して、新しいTodoアイテムがリストに表示されることを確認します。
- PUTリクエストで更新
- 作成したアイテムのID(例えば1)を使って、'http://127.0.0.1:8000/api/todos/1/' にPUTリクエストを送信します。
{
"title": "Updated Todo",
"description": "This is an updated todo item.",
"completed": true
}
- アイテムが更新されることを確認します。
- DELETEリクエストで削除
- 削除したいアイテムのIDを使って、'http://127.0.0.1:8000/api/todos/1/' にDELETEリクエストを送信します。
- アイテムが削除されることを確認します。
最後に
Djangoを使用してシンプルなRESTful Web APIを作成し、POSTMANで動作確認する手順は完了です。これを基に、さらに機能を追加したり、認証やフィルタリングなどの機能を実装したりすることができます。
djangoでwebアプリ作ってましたが、最近は時間があまり取れないので、シンプルなWebAPIを作ってRESTfulなAPIを忘れないようにしてます。
Discussion