IIS で REST を動かす場合の設定
これはInterSystems FAQ サイトの記事です。
REST のベース URL を /rest とした場合の IIS と Webゲートウェイの設定内容は以下の通りです。
IIS の設定内容
アプリケーション /rest を作成し、ハンドラーマッピングで * = CSPms を定義します。
ハンドラーマッピングの設定手順は以下の通りです。
IIS > Default Website > アプリケーション /rest > "ハンドラーマッピング" をダブルクリック > モジュールマップの追加
- 要求パス : *
- モジュール: CSPms
- 名前 : CSPGW (任意の名前)
要求の制限 > [要求のマップ先が次の場合のみハンドラーを呼び出す] のチェックはオフにします。
※こちらの設定はデフォルトでは「チェックあり」になっていますのでご注意ください。
この構成により、IIS は /rest アプリケーションを Web ゲートウェイに転送します。
Webゲートウェイの構成
Web Gateway のアプリケーションアクセス から /rest を追加します。
→既存アプリケーションをクリックしてコピーし、アプリケーションパスを /rest に設定しIRISサーバを指定します。
この構成により、Webゲートウェイは /rest アプリケーションをIRISサーバに転送します。
IRISサーバの構成
管理ポータルを開き、システム構成 > セキュリティ > アプリケーション > ウェブ・アプリケーション より /rest アプリケーションを追加します。
RESTディスパッチクラス名を「ディスパッチクラス」に指定します。
この構成により、IRIS は /rest アプリケーションを対象ネームスペースに転送し、対象ディスパッチクラスを呼び出します。
IIS経由でテスト
以下のURLで呼び出します。
REST ディスパッチクラスが以下のようなサンプルコードだった場合
Class User.MyREST Extends %CSP.REST {XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/test" Method="GET" Call="test"/> </Routes> } ClassMethod test() As %Status { set %response.ContentType="application/json" set res={"abc":"123"} write res.%ToJSON() quit $$$OK } }
以下の結果が得られます。