🌟
WebFOCUSのRESTfull APIを活用する
「WebFOCUSでRESTを使う」とは
「WebFOCUSでRESTを使う」という場合、以下の3つの内容のいずれかが該当する。
- WebFOCUSのRESTアダプタを活用する
- 利用するデータは外部Webサービスが提供するREST APIから取得できるJSONまたはXMLデータ
- オンラインで接続可能なすべてのREST APIサービスが対象となる。
- 外部REST APIにパラメータを渡し、レスポンスを得る。
- WebFOCUSのRESTful APIを活用する
- 利用するデータはWebFOCUSの資産
- node.jsやpython、またはWebページ内のJavaScriptから利用可能。
- 外部アプリケーションからWebFOCUS RESTful APIにパラメータを渡し、レスポンスを得る。
- WebFOCUSのWebFOCUS Clientアダプタを活用する
- 利用するデータはWebFOCUSの資産
- WebFOCUSのプロシジャ内で利用可能
- TABLEリクエストにより、WebFOCUS RESTful APIにパラメータを渡し、レスポンスをレポートとして出力する。
2.WebFOCUSのRESTful APIを活用する
目的
- WebFOCUSのRESTful APIを利用してWebFOCUSにサインオンしてユーザや資産の情報を表示する。
- GETリクエストでの動作に着目しCSRSトークンの生成とその後の操作について理解する
RESful Webサービスメソッドの実行を有効にする
アプリケーションの設定よりフィルタを選択
- クロスサイトリクエストフォージェリ保護を有効にする
- クロスサイトリクエストフォージェリトークンの名称を設定または初期を確認する。
- CSRFトークンなしのレガシーWFServletリクエストを許可する
- これを許可しないと従来のCSRFトークンなしのHTTPリクエストでWFServletを呼び出す動作が不可となる。
- RESTful Webサービスメソッドの実行を有効にする
RESTful APIにサインオンリクエストを送ってみる
アプリケーションを作成せず、Webブラウザのアドレスバーからgetリクエストを送信してみる。
サインオン
GETリクエスト
http://hostname/ibi_apps/rs/ibfs?IBIRS_action=signOn&IBIRS_userName=admin&IBIRS_password=admin
または
http://hostname/ibi_apps/rs/?IBIRS_action=signOn&IBIRS_userName=admin&IBIRS_password=admin&IBIRS_service=ibfs
- Getリクエスト
-
URL:
http://hostname/ibi_apps/rs
-
パラメータ:
IBIRS_action=signOn& IBIRS_username=ユーザ名& IBIRS_password=パスワード& IBIRS_service=ibfs
-
URL:
レスポンス
結果は全てXMLで返される。(JSONは選択できない)
- 下図は
admin
ユーザでサインオンに成功した場合のレスポンス
- ルートオブジェクト
<ibfsrpc>
のreturncode属性値が10000
ならリクエストが成功している - returndesc属性値が
SUCCESS
でも判断できるが、成否はreturncodeで判定した方が良い - ルートオブジェクトの子要素
<properties>
にCSRFトークン返され、以降のリクエストでCSRF保護のためトークンが必要となる。- プログラムで利用する場合、トークン名と値をセッション中は保持する必要がある
-
<rootObject>
要素ではサインオンしたユーザの情報が返される- プログラムで利用する場合、表示名(description)とユーザオブジェクトのフルパス(fullPath)あたりが必要になる
サインオンリクエストでreturncode=10000が返されれば、同セッション中はサインオンが有効となる
IBIRS_action=get
- サインオンに成功すればIBIRS_action=signOn以外のリクエストが受け付けられるようになる。
- IBIRS_action=getのリクエストは、指定したIBIRS_path以下のオブジェクトを取得する
GETリクエスト
fullPathを指定せずルート以下の資産を取得する
- GETリクエスト
-
URL:
http://hostname/ibi_apps/rs
-
パラメータ:
IBIRS_action=get& IBIRS_service=ibfs
-
URL:
レスポンス
- ルートオブジェクトの子要素
<rootObject><children>
以下に<item>
要素が列挙して返される -
<item>
用さおはそれぞれdescription、fullpath,type等の属性を持つ - リクエストでIBIRS_pathを指定しなかったのでルート(IBFS:/)のオブジェクトが返される
GETリクエスト(IBIRS_path=IBFS:/SSYS)
fullPathにIBIFS:/SSYS
を指定してユーザ情報を取得する
- GETリクエスト
-
URL:
http://hostname/ibi_apps/rs
-
パラメータ:
IBIRS_action=get& IBIRS_path=IBFS:/SSYS& IBIRS_service=ibfs
-
URL:
レスポンス(IBIRS_path=IBFS:/SSYS)
- ルートオブジェクトの子要素
<rootObject><children>
以下に<item>
要素が列挙して返される -
<item>
用さおはそれぞれdescription、fullpath,type等の属性を持つ - リクエストでIBIRS_path=IBFS:/SSYSを指定したのでIBFS:/SSYS以下のオブジェクトが返される
その他のIBIRS_action
利用できるIBIRS_actionはマニュアルかIBIRS_action=TEST
で開くテストページで確認できる。(TESTは半角大文字、サインオン後の利用)
テストページ
テストページは画面上部でサービスIBIRS_service
を選択し、リンクかスクロールでIBIRS_actionを探すことが出来る。
- action名の横に(POST)と書かれている物はCSRFトークンが必須でGETメソッドを受け付けない。
- action名の横に(GET)と書かれている物はCSRFトークンは必須ではなく、GET/POST両方のメソッドを受け付ける
まとめ
WebFOCUSのRESTful APIを利用すれば外部アプリケーションからHTTPリクエストによりWebFOCUSの情報にアクセスできる。
- 出来る事
- サインオン・サインアウト
- 資産の一覧表示
- 資産の追加・更新・削除(POST + CSRFトークン必須)
- プロシジャの実行
- etc.
WebFOCUS Clientで出来ることは全て出来る
Discussion