Django Rest Frameworkを学ぼう! ~APIView クラスについて~

前回は、API Viewのラッパーの一つである「@api_view」デコレータによるAPI Viewの実装方法を学びました。

今回はもう一つのラッパーであるAPIViewクラスについて学びます。

前回

APIView クラスについて

API Viewクラスは、Djangoのクラスベースビューです。

クラスベースビューは、viewを構築する手段の一つで、関数の代わりにPythonオブジェクトとしてビューを定義できます。

公式サイトには、以下のメリットが紹介されています。

・ 特定の HTTP メソッド (GETPOST など) に関連するコードの集まりを、条件分岐を使ってかき分けるのではなく、それぞれに独立したメソッドを割り当てることができる。

・ ミックスイン (多重継承) などのオブジェクト指向のテクニックを使って、コードを再利用可能なコンポーネントに分解できる。

https://docs.djangoproject.com/ja/3.0/topics/class-based-views/intro/

API View ~Article 一覧~の作成

最初にArticle一覧を作成しましょう。

API Viewの追加

views.pyに以下のクラスを追加します。

Django REST FrameworkでAPI Viewを作成するために、「APIView」クラスをインポートしました。

このクラスを新しく作成したArticleListCreateAPIViewクラスに継承させることで、クラスベースビューを作成できます。

また、クラスベースビューでは、GET / POSTメソッドの処理を「def get()」、「def post()」と実装することで、それぞれのリクエストごとに処理することができます。

URLディスパッチャの変更

Article一覧のリクエスト先を以下の通りに修正します。

クラスベースビューを読み込むとき、「as_view()」と指定する必要があります。

動作確認

http://localhost:8000/api/articles/」にアクセスして、動作を確認してみましょう。

表示は、OKですね。続いて、記事を投稿できるか確認してみましょう。

Contentに以下のデータを入力し、POSTボタンを押下します。

新しく「id=5」の記事が追加されました。

記事の投稿も問題ないですね。

API View ~Article 詳細~の作成

次に記事の詳細ページを作成します。

API Viewの追加

ArticleDetailAPIViewもArticleListCreateAPIViewと作り方は一緒です。

GET/PUT/DELETEメソッドごとに関数を定義するだけで、それぞれの処理が実装できます。

URLディスパッチャの変更

Article詳細のリクエスト先を記述します。

動作確認

動作確認するために、先ほど作った記事(id=5)の詳細ページにアクセスします。

http://localhost:8000/api/articles/5

詳細ページが表示されましたね。

続いて、記事の更新を行いましょう。

Contentに以下のデータを登録して、PUTを押下します。

更新も問題ないですね。

最後に画面右上の「DELETEボタン」を押下して、記事を削除してみましょう。

記事の削除もOKですね。

次回

次回は、シリアライズのバリデーションチェックについて学んでいきましょう。

関連記事

こちらもどうぞ

Djangoおすすめ書籍

Djangoを学ぶなら以下の書籍がオススメです。

緑 -> 赤 -> 紫の順でやればOKです。読みやすい英語で書かれているので、英語力もついでに上がるかもしれません^^

コメントを残す