LoginSignup
3
1

More than 3 years have passed since last update.

[更新]DataPower PlaygroundでGatewayScriptを試す

Last updated at Posted at 2018-04-13

2019/9/25 追記

DataPower Playgroundはサンセットしてしまいました。。

はじめに

DataPower Playgroundは、DataPowerユーザーがGatewayScript開発学習を気軽にするためのクラウド環境とのことです。IBM Cloud上にDataPowerがホスティングされているようです。サンプルコードも色々提供されていますし、APIリファレンスも充実しています。
無償で気軽にコードを試せるというメリットがありつつ、時折「昨日は動いてたのに、今日は502 Bad Gateway♥」なんて時もあります。そこは無償ゆえのサービスレベルと割り切って使うのが良いかと思います。

試したシナリオ

API Connect v5.0.8.xでは、APIに対してクライアントIDをヘッダにつけてリクエストする場合、X-IBM-Client-Idという固定のヘッダで受け付けるという制限事項があります。とはいえベンダー名がもろに出てるヘッダを使いたくないというケースもあります。例えばX-Client-Idを使いたいと言った場合、一旦そのヘッダでリクエストを受け付けてDataPowerでそれをX-IBM-Client-Idに変換することで乗り切ることができます。
そこで必要となるコード例をPlaygroundで試してみます。

サンプルコード

他にも書き方は色々あると思いますが、ここでのコード例は以下の通りです。

GatewayScript.js
var hm = require('header-metadata');
var sm = require('service-metadata');
var log = session.name('log') || session.createContext('log');

var clientId = hm.current.get('x-client-id');
console.info(hm.current.headers);

if (clientId) {
    log.setVar('clientId', clientId);
    hm.current.remove('x-client-id');
    hm.current.set('x-ibm-client-id', clientId);
} else{
    hm.response.statusCode = '401';
    session.output.write("You need Client ID");
    console.log(hm.response.statusCode);
    return;
}

session.output.write(hm.current.headers);
console.info(hm.current.headers);

実行結果

  1. Code画面にコードをコピペします。
    Kobito.EcfU6Z.png

  2. Request画面でx-client-idヘッダと値をAddして、Testをクリックします。
    Kobito.E680hW.png

  3. Response画面にクライアントに返る結果が表示されます。
    Kobito.SsMl11.png

  4. Log画面にDataPowerのシステムログが表示されます。ここでコードに書いたように、変換前のヘッダと、変換後のヘッダが出力されています。
    Kobito.kGfrh5.png

  5. クライアントIDヘッダをつけずにリクエストしてみます。Request画面で先ほどのクライアントIDヘッダをremoveしてTestをクリックします。
    Kobito.VJRHN1.png

  6. 以下のようなエラーとなります。
    Kobito.1lgcyV.png

  7. Response画面には設定したメッセージが出ます。
    Kobito.MiQ1MJ.png

  8. Log画面には設定したエラーコードが出力されます。また4で出力されていたクライアントIDヘッダは当然出力されません。
    Kobito.1EH2vI.png

まとめ

以上でDataPower Playgroundを使って気軽にGatewayScriptのコードを試すことができることがわかりました。
なお注意点としてはAPI ConnectのAPI managerのアセンブルで使えるモジュールのapim.custom.jsはここでは使えません(なのでAPICコンテキスト変数は使えません)。
あくまでDataPower単体でのGatewayScriptという位置付けになります。

参考

3
1
0

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
3
1