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;