1

Node.js で記述された小さな OpenWhisk アクションを作成しました。このアクションは、バックエンド システムを呼び出します。アクションを実装する関数は次のとおりです (この問題に関係のないコードの一部を削除しました)。

/**
  *
  * main() will be invoked when you Run This Action.
  *
  */


function main() {

    var request = require("request");

    var data = {
    };

    var options = {
        method: "POST",
        url: "https://whatever.it.is",
        body: data,
        json: true
    };

    request.post(options, function(error,response,body) {
        var data = []; 
        return whisk.done({"msg":data});
    });

    return whisk.async();
}

次に、Bluemix API Manager で API 呼び出しを定義しようとしました。呼び出しは完了しました。しかし、結果として、whisk.done() を使用して返されたコンテンツではなく、アクティビティの Id を受け取ります。

何か案は?。前もって感謝します。

4

1 に答える 1

2

Tldr: URL のクエリに追加blocking=trueして、同じ HTTP 要求でアクティベーションの結果を返します。


OpenWhisk でのアクション呼び出しについて言えば、選択できる 2 つの異なるモードがあります。ブロッキングまたはノンブロッキング

ノンブロッキング呼び出しがデフォルトでありPOST、OpenWhisk バックエンドに対してペイロードを実行し、呼び出し (別名activation ) の結果が格納されるアクティベーション IDを取得します。Activations APIを介して、後でこれらの結果を取得できます (したがって、非ブロッキング) 。

呼び出しのブロックは、アクティベーションが完了するまで待機し、同じ HTTP リクエストで結果を返します。ブロッキング リクエストは同じ API を介して行われますが、クエリ パラメータblocking=trueが追加されます。

あなたの問題は、ブロッキング呼び出しが必要な可能性が高いようです。クエリ パラメーターのバリエーションについては、OpenWhisk REST API リファレンス を参照してください。

于 2016-05-22T21:06:16.493 に答える