12. API Gateway

ここではAPI Gatewayの実行方法について説明します。

12.1. API Gatewayの実行

NbApiGatewayを使用して、任意のHTTPリクエストをAPI Gateway宛てに送信することができます。

以下の例では、API名が"apiname"、サブパスが"subpath"でJSONの応答を返すAPIに対しPUTリクエストを送信します。 結果をパースし、NbJsonObjectとして取得しています。

リクエストボディ用のデータはNbJsonObject又はbyte[]を使用します。使用時はContentTypeを適切に設定してください。

var apigateway = new NbApiGateway("apiname", System.Net.Http.HttpMethod.Put, "subpath");
apigateway.ContentType = "application/json";
var jsonObj = NbJsonObject.Parse("{'foo': 'bar'}");
var result = apigateway.ExecuteAsync(jsonObj).Result;
var respBody = result.JsonObject;

バイナリの場合も同様に送信することができます。

var apigateway = new NbApiGateway("apiname", System.Net.Http.HttpMethod.Put, "subpath");
apigateway.ContentType = "application/octet-stream";
var json = "{'foo': 'bar'}";
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(json);
var result = apigateway.ExecuteAsync(byteArray).Result;

12.2. ヘッダとクエリパラメータ

リクエストヘッダ、クエリパラメータを付与する場合、apigatewayのインスタンス生成後に、追加でSetHeader()、SetQueryParameter()を使用して下さい。

apigateway.SetHeader("AddHeader", "HeaderValue1");
apigateway.SetHeader("User-Agent", "Sample-User-Agent");
apigateway.SetQueryParameter("samplequery", "param1");

レスポンスヘッダを参照する場合、レスポンス結果のHeadersから取得することができます。

var contentType = result.Response.Content.Headers.GetValues("Content-Type");

12.3. バイナリデータの取得

APIのレスポンスがバイナリなどJSON以外の場合、ExecuteAsync()の代わりに、ExecuteRawAsync()を使用します。

var apigateway = new NbApiGateway("apiname", System.Net.Http.HttpMethod.Get, "subpath");
var result = apigateway.ExecuteRawAsync().Result;
var respBody = result.RawBytes;