12. API Gateway¶
ここでは API Gateway の実行方法について説明します。
12.1. API Gatewayの実行¶
NbApigw を使用して、任意の HTTP リクエストを API Gateway 宛てに送信することができます。
リクエストは NbApigw#Builder を使用して生成することができます。 以下の例では、API 名が "apiname" 、サブパスが "subpath" で JSON の応答を返す API に対し PUT リクエストを送信します。 結果をパースし、NbJSONObject として取得しています。
リクエストボディ用のデータは NbJSONObject、 String、又は InputStream が使用可能です。使用時は ContentType を適切に設定してください。
NbApigw apigw = NbApigw.builder("apiname")
.put()
.subpath("subpath")
.body(NbJsonObject.Parse("{'foo': 'bar'}"))
.contentType("application/json")
.build();
apigw.executeJSON(new NbCallback2<NbJSONObject, Response>() {
@Override
public void onSuccess(NbJSONObject json, Response response) {
// get result from "json"
}
@Override
public void onFailure(int statusCode, NbErrorInfo errorInfo) {
// fail
}
});
バイナリの場合も同様に送信することができます。 Body 設定時の引数に、送信データの InputStream、 contentLength、 contentType を指定してください。
NbApigw apigw = NbApigw.builder("apiname")
.put()
.subpath("subpath")
.body(inputStream, 128, "application/octet-stream")
.build();
apigw.executeJSON(new NbCallback2<NbJSONObject, Response>() {
@Override
public void onSuccess(NbJSONObject json, Response response) {
// get result from "json"
}
...
});
12.2. ヘッダとクエリパラメータ¶
リクエストヘッダ、クエリパラメータを付与する場合、NbApigw の Builder に、追加で header()、param() を使用して下さい。
NbApigw apigw = NbApigw.builder("apiname")
.get()
.subpath("subpath")
.param("sampleparam", "param1")
.header("AddHeader", "HeaderValue1")
.header("User-Agent", "Sample-User-Agent")
.build();
レスポンスヘッダを参照する場合、コールバックの引数 response から取得することができます。
apigw.executeJSON(new NbCallback2<NbJSONObject, Response>() {
@Override
public void onSuccess(NbJSONObject json, Response response) {
String sampleHeader = response.header("TestResponseHeader");
}
...
});
12.3. バイナリデータの取得¶
API のレスポンスがバイナリなど JSON 以外の場合、executeJSON() の代わりに、executeStream() を使用します。 レスポンスの内容に応じて、InputStream からデータを取得してください。
apigw.executeStream(new NbCallback2<InputStream, Response>() {
@Override
public void onSuccess(InputStream inputStream, Response response) {
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
} catch (Exception ex) {
// fail
}
}
...
});