Python WEBサービス

【DRF】venv仮想環境を用いて、DRFシステムで書籍管理システムを作成する(6)データの取得

ここからは、GET、POST、PUT、DELETE の各種メソッドを使用して、API にリクエストを送り、データを処理します。

14.データ取得

14-1.メソッドの種類と役割

一覧表にまとめると以下のようになります。

メソッド 内容
GET 取得
POST 作成
PUT / PATCH 更新
DELETE 削除

PUT / PATCH が目新しい感じがしますが、こうやって見ると単純ですね。
まずは、GET メソッドを使用して、API からデータを取得して、画面に表示していきます。

14-2.App.vue 変更

App.vue はメインのファイルになります。ここで、ルーターを指定しています。

Vue Routerとは?

Vue Routerとは Vue.jsのプラグインの一つで、SPA(Single Page Application)のルーティング制御をする為のものです
Vue Routerを使用すると、ページ全体のリロードをせずに画面遷移するアプリケーションを簡易に実装する事が出来ます。

vue/src/App.vue 編集前

編集後

14-3.router 変更

ルーターを修正します。

vue/src/router/index.js

12-4.axiosをインストール

APIでデータを取得できるように設定していきます。

API実行のため、axiosをインストールします。
axios とはどういったものなのかをChatGPTさんに質問したところ、下記の回答を得ました。

axiosは、JavaScriptでHTTPリクエストを簡単に行うためのライブラリです。Vue.jsと組み合わせて使うことで、外部APIとの通信を効率的に行えます。

【特徴】
1. Promiseベース:非同期通信をPromiseで扱えるので、コードがシンプルになります。
2. ブラウザとNode.js両方で動作:フロントエンドとバックエンドの両方で利用可能です。
3. リクエストの設定が簡単:ヘッダーやタイムアウト設定などを簡単に指定できます。
4. インターセプター機能:リクエストやレスポンスを処理する前にカスタムロジックを追加できます。
5. 自動的なJSONデータ変換:リクエストとレスポンスのデータを自動的にJSON形式で扱います。

次のコマンドでインストールを行います。
実行する階層は vue ディレクトリです。
依存関係の競合を無視してインストールするため、オプションを付けてインストールしてみます。

npm 5 以降では、上記コマンドでaxiospackage.jsondependenciesに追加されるとのことですので、追加されたか確認します。

vue/package.json

vue/src/common/api.service.js を作成し、以下を設定します。
common ディレクトリを作成し、その中に api.service.js ファイルを作成します。

vue/src/common/api.service.js

14-5.vue.config.js の変更

vue/vue.config.js を変更します。

vue/vue.config.js

14-6.APIから本のタイトルを取得する

いよいよAPIを実行し、DB内のタイトルを取得してみます。
vue/src/views/HomeView.vue を以下のように修正します。
ボタンは Vuetify のボタンを使用しています。

vue/src/views/HomeView.vue

ボタンの表示画面

タイトルを取得した画面

14-7. ボタンの色を変えてみる

白いボタンが見にくかったので、ボタン色を青くしてみます。
v-btn に "color" を設定します。

vue/src/views/HomeView.vue

結果

14-8. 詳細データの取得

本のタイトルを詳細画面に遷移するリンクとし、遷移先画面で詳細情報を表示するようにします。
まずルーターに詳細画面用の設定を追加します。

vue/src/router/index.js

14-9.HomeView.vue修正

書籍のタイトルを取得しているページの書籍表示部分を修正し、書籍タイトルをリンクとし、詳細画面に遷移するようにします。
ここでは、 router-link を使用してリンクを作成します。

vue/src/views/HomeView.vue

name には vue/src/router/index.js で指定した book_detail をあてがいます。

14-10.詳細ページ(BookDetailView.vue)追加

詳細データを表示する画面のファイルを作成します。

キモは

の部分です。

この get() 中のURLは、項番5-2.で行ったDjangoのルーティングで指定したエンドポイントを指定します。
項番5-2.で指定した、Django のルーティング内容は以下の内容です。

django/apps/book/api/urls.py

また、 .get() の中はシングルクォーテーションではなく、バッククォート(@のキーにあると思います)で囲み、最後にスラッシュを忘れずに記述しましょう。
私はこのスラッシュをつけ忘れたがために20分ほど悩んでしまいました(苦笑)

動作確認

ボタン押下後

タイトル押下後

上記動作の動画Gifです。

実際にAPIを利用してフロント側の処理を行えるようにできました。

関連するポスト

【DRF】venv仮想環境を用いて、DRFシステムで書籍管理システムを作成する(1)Djangoのセットアップ

【DRF】venv仮想環境を用いて、DRFシステムで書籍管理システムを作成する(2)Djangoアプリケーションの作成

【DRF】venv仮想環境を用いて、DRFシステムで書籍管理システムを作成する(3)APIの動作とテスト

【DRF】venv仮想環境を用いて、DRFシステムで書籍管理システムを作成する(4)Vue.jsの導入

【DRF】venv仮想環境を用いて、DRFシステムで書籍管理システムを作成する(5)Vuetifyの導入

-Python, WEBサービス
-, , , ,