🌟

WebFOCUSのRESTfull APIを活用する

2025/01/17に公開

「WebFOCUSでRESTを使う」とは

「WebFOCUSでRESTを使う」という場合、以下の3つの内容のいずれかが該当する。

  1. WebFOCUSのRESTアダプタを活用する
    • 利用するデータは外部Webサービスが提供するREST APIから取得できるJSONまたはXMLデータ
    • オンラインで接続可能なすべてのREST APIサービスが対象となる。
    • 外部REST APIにパラメータを渡し、レスポンスを得る。
  2. WebFOCUSのRESTful APIを活用する
    • 利用するデータはWebFOCUSの資産
    • node.jsやpython、またはWebページ内のJavaScriptから利用可能。
    • 外部アプリケーションからWebFOCUS RESTful APIにパラメータを渡し、レスポンスを得る。
  3. 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

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
      

レスポンス

結果は全てXMLで返される。(JSONは選択できない)

  • 下図はadminユーザでサインオンに成功した場合のレスポンス
    RESTful
  • ルートオブジェクト<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
      

レスポンス

  • ルートオブジェクトの子要素<rootObject><children>以下に<item>要素が列挙して返される
  • <item>用さおはそれぞれdescription、fullpath,type等の属性を持つ
  • リクエストでIBIRS_pathを指定しなかったのでルート(IBFS:/)のオブジェクトが返される

RESTful

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
      

レスポンス(IBIRS_path=IBFS:/SSYS)

  • ルートオブジェクトの子要素<rootObject><children>以下に<item>要素が列挙して返される
  • <item>用さおはそれぞれdescription、fullpath,type等の属性を持つ
  • リクエストでIBIRS_path=IBFS:/SSYSを指定したのでIBFS:/SSYS以下のオブジェクトが返される
    RESTful

その他の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