はじめに
メシウスはHTML/CSS/JavaScriptで実装するWebページ向けに複数のライブラリを提供しています。ActiveReportsJSは帳票ライブラリ、WijmoはさまざまなUI部品を提供するライブラリです。本記事では、ActiveReportsJSやWijmoを利用して、サーバーのWeb APIから取得したデータを表示する方法を説明します。
前回記事では、サーバー側のWeb APIを、Pythonのフレームワーク「Django REST framework」で作成しました。今回はこのWeb APIからデータを取得して、ActiveReportsJSやWijmoをReactと組み合わせたWebページで表示する実装を行っていきます。
対象読者
- ActiveReportsJSやWijmoの、実利用により近いサンプルを必要としている方
- Web APIを手軽に実装したい方
- Django REST frameworkのWeb APIからデータを取得する例を知りたい方
必要な環境
前回記事で実装し、本記事で参照するWeb APIのサンプルコードは、以下の環境で動作を確認しています。環境構築の手順や実行の方法は、前回記事を参照してください。
- Windows 10 64bit版
- Python 3.11.5
- XAMPP 8.2.4
本記事で新たに実装するWebページは、以下の環境で動作を確認しています。
- Windows 10 64bit版
- Node.js v18.18.0
- React 18.2.0
- ActiveReportsJS 4.1.0
- Wijmo 5.20231.904
- Microsoft Edge 117.0.2045.47
Webページのサンプルコードを実行するには、サンプルのフォルダーで「npm install」コマンドを実行してライブラリをダウンロード後、「npm run start」コマンドを実行して、「https://localhost:3000」をWebブラウザーで表示します。
Web APIの微調整
前回記事で作成したWeb APIは「http://localhost:8000」のURLでアクセスできます。一方、今回作成するWebページのURLは「http://localhost:3000」です。このままではWebページとWeb APIのオリジン(プロトコル、ホスト、ポート番号の組)が異なるため、WebページからWeb APIにアクセスできません。このアクセスを許可するため、オリジン間リソース共有(CORS)の設定をWeb APIに行います。CORSの詳細はMozillaのページも参考にしてください。
まずPythonのパッケージマネージャーであるpipコマンドをリスト1の通り実行して、django-cors-headersパッケージをインストールします。
pip install django-cors-headers
次にsettings.pyにdjango-cors-headersの設定をリスト2の通り記述します。
INSTALLED_APPS = [ (略) 'corsheaders', #...(1) ] MIDDLEWARE = [ (略) 'corsheaders.middleware.CorsMiddleware', #...(2) ] # CORSを有効にするオリジン ...(3) CORS_ORIGIN_WHITELIST = [ 'http://localhost:3000', ]
INSTALLED_APPS(1)、MIDDLEWARE(2)に、それぞれdjango-cors-headersの設定を追加します。また、CORSを有効にするオリジンを表す(3)のCORS_ORIGIN_WHITELIST項目を追加して、Web APIへのアクセスを許可するWebページのオリジン「http://localhost:3000」を設定します。
以上の設定により、Django REST frameworkで作成したWeb APIに、今回作成するWebページからアクセスできるようになります。