アプロダ、REST APIの実装①

Django REST framework

概要

DRFとVueで、ファイルアップローダーを作るシリーズの一つです。Django REST frameworkを使って、Vue.jsとやり取りする各種エンドポイントを実装していきます。

シリアライザーの作成

REST APIではJSONやXMLなどでデータのやり取りをしていくことになります。例えば、先ほど作ったCompositeモデルのデータを一つ作りたいならば、作成用のURLに対して、次のようなJSONを送信できます。

{
    "name":"secret",
    "is_dir":true,
}

他にも例を出すと、Compositeの一覧が欲しい場合は、データ一覧用のURLにアクセスします。その結果、次のようなJSON等がブラウザに返却されます。

[
    {
        "name":"dir1",
        "is_dir":true,
    },
    {
        "name":"dir2",
        "is_dir":true,
    },
    {
        "name":"dir3",
        "is_dir":true,
    }
]

JSON等を送るとそれをモデルに変換したり、モデルを基にJSON等を作ったりする訳です。こういったデータの相互変換を担当するのが、DRFのシリアライザーです。通常のDjangoで言うと、フォームと似たポジションです。このシリアライザーを作っていきましょう。

nuploader1/serializers.pyを作り、次のようにします。

from rest_framework import serializers
from .models import Composite


class CompositeSerializer(serializers.ModelSerializer):

    class Meta:
        model = Composite
        fields = ('pk', 'name', 'is_dir', 'src', 'parent', 'zip_depth')

フォームを使ったことがある人ならば、Djangoのモデルフォームじゃん!と思うかもしれません。今のところは非常にシンプルです。

ビューの作成

nuploader1/views.pyを次のようにします。

from rest_framework import viewsets
from .models import Composite
from .serializers import CompositeSerializer


class CompositeViewSet(viewsets.ModelViewSet):
    queryset = Composite.objects.all()
    serializer_class = CompositeSerializer

DRFで使えるビューは山ほどあるのですが、様々な機能を簡単に作ってくれるお得なビューが、viewsets.ModelViewSetです。通常のDjangoで例えると、django.views.genericのListView、DetailView、CreateView、UpdateView、DeleteViewが1つになったイメージです。もちろん個別にそれぞれのビューを作ることもできます。

URLとの紐づけ

nuploader1/urls.pyを次のようにします。

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

app_name = 'nuploader1'

router = DefaultRouter()
router.register(r'composites', views.CompositeViewSet, basename='composites')

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

router = DefaultRouter()といった記述があります。先ほど書いたように、viewsets.ModelViewSetは幾つかのビューがまとまったようなものです。それらの各ビューと各URLをマッピングするような処理をしているものと考えるとわかりやすいでしょう。後で作りますが、ビューを個別に作った場合は普通に、いつもどおりのノリで書けます。

Browsable API

Djangoには便利な管理サイトが付属しているように、Rest frameworkにもBrowsable APIという便利な機能があります。runserverで起動し、http://127.0.0.1:8000/uploader/api/にアクセスしてみましょう。

API ROOT

"composites": "http://127.0.0.1:8000/uploader/api/composites/"とあるので、リンクをクリックしてみましょう。

一覧

上の画像ですが、ここはデータの一覧が表示されていて、実際にデータを投入することもできます。試しにPOSTボタンを押して送信すると、作ったデータの内容が表示されます。一覧に戻るには、上にあるComposite Listのリンクです。

一覧に戻ってみると、次画像のようにちゃんと一覧が表示されますね。

一覧2

http://127.0.0.1:8000/uploader/api/composites/1/のように、URLにデータのpkを入れてみましょう。すると次のように、対象のデータの内容と、更新用フォームと、削除ボタンがあります。

詳細

あとあと、Vue.jsからはこれらのURLを使って様々な処理をしていくのですが、今回のようにブラウザで直接アクセスすることで、簡単な動作の検証をすることができます。

Relation Posts

Comment

記事にコメントする

まだコメントはありません。