jQuery($.getJSON と $.ajax)を使用した InterSystems IRIS データのJSON形式での取得方法をご紹介します。
以下にサンプルをご用意しました。
https://github.com/Intersystems-jp/REST_JSON_sample
サンプルには、次の内容が含まれます。
・REST + JSON
・REST + CORS
※それぞれ、$.getJSON と $.ajax で取得する方法を記載しています。
※サーバ側ではSelect文の実行結果をJSON_OBJECT関数を使用しJSON文字列で出力しています。
関数については以下のドキュメントをご覧ください。
JSON_OBJECT関数
使用手順は以下になります。
1. USERネームスペースに json.xml をインポート・コンパイル
2. テスト用データの作成(ターミナルで以下のコマンドを実行する)
USER>do ##class(Sample.Person).Populate(200)
3. 初期設定(REST用)
管理ポータル > セキュリティ管理 > ウェブ・アプリケーション
新しいウェブ・アプリケーションを作成ボタンを押す
名前 /csp/user/rest
ネームスペース USER
ディスパッチ・クラス REST.Person
保存ボタンを押す
4. test_json.html をWEBサーバに配置する
例:
C:\Inetpub\wwwroot <-- IIS ルート
C:\InterSystems\IRIS\CSP\user <-- cspフォルダ
5. test_json.htmlをブラウザで開く
例:
http://localhost/test_json.html
http://localhost:52773/csp/user/test_json.html
※サンプル内のクロスドメイン対応URLは、http://127.0.0.1:52773/ を使用(PWS用サンプル)
6. テキストボックスに適当なID(1,2,100 など)を入力し、検索ボタンを押して出力結果を確認する。
★IRISでJSONを操作する基本情報については、こちらの記事をご覧ください(ビデオもご紹介しています)。
【はじめてのInterSystems IRIS】セルフラーニングビデオ:アクセス編:IRIS での JSON の操作
【注意】
IRIS 2025.1以降のバージョンでGitHubのサンプル(REST+CORS)を実行すると、以下のような CORS エラーになります(F12/開発者ツールで確認)。
Access to XMLHttpRequest at 'http://127.0.0.1/csp/user/rest/persons/2' from origin 'http://<IP Address>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
これは、2025.1 以降のバージョンより、管理ポータルの Web アプリケーション設定 で受け入れるオリジンを制限することができるようになったことが関係しています。
管理ポータルの、[システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション] RESTアプリケーション(例:/csp/user/rest)より、
[Cross-Origin 設定] タブで、許可されるオリジンまたはヘッダを追加します。オリジンまたはヘッダを追加するには、対応するボックスに名前を入力して [新しく追加] をクリックします。
ワイルドカードのアスタリスク (*) を入力して、すべてのオリジンを許可することもできますが、この場合は、CORS ヘッダを処理する方法を定義する必要があります。