2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ILE RPG等からREST APIコールする7.6新機能 QSYS2 HTTPサービス

Posted at

IBM i 7.5以前、ILE RPGなどILE言語からREST APIをコールする方法としては、下図のようなSYSTOOLSライブラリーのHTTP関数が利用可能でした。(執筆時点ではIBM i 7.6含め利用可能)

image.png

そして、IBM 7.6で新しくREST APIの呼び出し機能として追加されたのが、QSYS2ライブラリーのHTTP関数です。

New HTTP functions based in QSYS2
https://www.ibm.com/support/pages/new-http-functions-based-qsys2

QSYS2 HTTPサービスの特長

これらのHTTPサービスは、Webサービスを使用するHTTPリクエストを行うために使用されます。これらの関数により、SQLプログラマーは埋め込みSQLを含むSQLを介してRepresentational State Transfer(RESTful)を利用できます。これらのサービスは、JVM作成のオーバーヘッドなしで、SYSTOOLS HTTP関数と同じ機能を提供します。IWSのHTTPトランスポートAPI機能を使用します。
HTTP関数はQSYS2に存在し、SYSTOOLS HTTP関数よりもオーバーヘッドが低くなっています。
QSYS2 HTTP関数のその他の利点として、HTTP認証、プロキシサポート、構成可能なリダイレクト試行、および構成可能なSSLオプションが挙げられます。

IBM i 7.6 SF99960 レベル 2 および IBM i 7.5 SF99950 レベル 11 で強化:
URL_ENCODE および URL_DECODE が 2 ギガバイトの値を処理できるように拡張されました。

IBM i 7.5 SF99950 レベル 4 および IBM i 7.4 SF99704 レベル 25 で強化
QSYS2 HTTP 関数の BLOB ベースバージョンが追加されました。

IBM i 7.5 SF99950 レベル 3 および IBM i 7.4 SF99704 レベル 23 で強化
「ヘッダー」に対する HTTP オプションのサポートにより、ユーザーはすべてのヘッダーオプションを単一の JSON ドキュメント内に含めることができます。

IBM i 7.5 SF99950 レベル 1、IBM i 7.4 SF99704 レベル 20、および IBM i 7.3 SF99703 レベル 28 で強化
HTTP_PATCH スカラー関数の追加
HTTP_PATCH_VERBOSE テーブル関数の追加
HTTP_xxx_VERBOSE 関数の RESPONSE_HTTP_HEADER 列の情報の返方法を指定する新しいヘッダーオプション verboseResponseHeaderFormat が追加されました。

単純なサンプルコード

REST呼び出しが成功したことを確認する

VALUES QSYS2.HTTP_GET(
  URL     => 'https://www.ibm.com/support/pages/sites/default/files/inline-files/xmldoc.xml',       
  /* CLOB(1 MB)  No default       */
  OPTIONS => DEFAULT  
  /* CLOB(1 MB)  Default: Null    */
);

失敗の詳細を返す HTTP_GET_VERBOSE

select *
  from table (
      QSYS2.HTTP_GET_VERBOSE('http://www.w3.org/notfound.html', '')
    );

BASE64エンコード

VALUES QSYS2.BASE64_ENCODE('myuser:mypassword');
-- lKikooWZepSol4GioqaWmYQ=

BASE64デコード

VALUES varchar(QSYS2.BASE64_DECODE('lKikooWZepSol4GioqaWmYQ='), 80));
-- myuser:mypassword

URLエンコード

VALUES 'https://www.example.com/search?q=' CONCAT URL_ENCODE('IBM i Q&A');

URLデコード

VALUES URL_DECODE('https://www.example.com/search?q=IBM+i+Q%26A');
2
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?