レスポンスの形式を設定する
Unified Endpoint のレスポンスのフォーマットは以下から選択できます。
フォーマット | 説明 |
---|---|
Auto (default) | 有効な転送設定が 1 つの場合は当該のサービスのフォーマットでレスポンスを返します。2 つ以上ある場合は 「Unified」 レスポンスフォーマットでレスポンスを返却します。 |
Unified | Unified 形式でレスポンスを返却します。詳しくは、レスポンスのフォーマット Unified を参照してください。 |
SORACOM Beam | Beam のレスポンスのみを返却します。他の転送設定がある場合、データは転送しますがその結果は返しません。 |
SORACOM Funk | Funk のレスポンスのみを返却します。他の転送設定がある場合、データは転送しますがその結果は返しません。 |
SORACOM Funnel | Funnel のレスポンスのみを返却します。他の転送設定がある場合、データは転送しますがその結果は返しません。 |
SORACOM Harvest Data | Harvest Data のレスポンスのみを返却します。他の転送設定がある場合、データは転送しますがその結果は返しません。 |
カスタム | 指定したレスポンスを常に返却します。成功時、エラー時のレスポンスをそれぞれ設定できます。 |
レスポンスのフォーマット Unified
レスポンスのフォーマットで「Unified」を選択した場合、もしくは「Auto (default)」を選択して有効な転送設定が 2 つ以上ある場合、Unified 形式のレスポンスが返却されます。
加えて、以下のような動作をします。
- すべての転送先からのレスポンスが返却されてから、デバイスにレスポンスが返却されます。
- Funnel は転送先へのリクエストを非同期に処理しています。そのため、転送先にリクエストが転送されるタイミングと、デバイスにレスポンスが返却されるタイミングの間には遅延が発生します。
- 転送先が設定されていない、またはすべて無効 (disabled) の場合は、フォーマットの指定によらず
400 Subscriber configuration is not found
という文字列が返却されます。
フォーマットの各プロパティと、すべての転送先で正常に送信できた場合の例、いずれかの転送先でエラーが返却された場合の例は、以下のとおりです。
プロパティ | 説明 |
---|---|
statusCode | すべての転送先へのリクエストが成功した場合は 200 が、ひとつでも失敗した場合は 207 が返却されます。 HTTP エンドポイントを利用した場合における、レスポンスの HTTP ステータスコードに相当します。 |
body | HTTP エンドポイントを利用した場合における、レスポンスの HTTP Body です。内部構造は以下のとおりです。 |
body.result | すべての転送先へのリクエストが成功した場合は “ok” が、ひとつでも失敗した場合は “ng” が返却されます。 |
body.detail | 各転送先のレスポンスがオブジェクト形式で保存されています。オブジェクトのキーが SORACOM の各サービス名になっています。 TCP/UDP を利用した場合も、転送のために HTTP を利用しているので、HTTP 形式で返却されます。 |
body.detail.${サービス名}.statusCode | 転送先から返却された HTTP ステータスコードです。 |
body.detail.${サービス名}.body | 転送先から返却されたレスポンスの本文です。Funk の場合、常に base64 形式にエンコードされます。 |
body.detail.${サービス名}.encoding | レスポンスが Base64 形式でエンコードされている場合、それを表す encoding: "base64" が付与されます。 |
すべての転送先で正常に送信できた場合
{
"statusCode": 200,
"body": {
"result": "ok",
"detail": {
"beam": { "statusCode": 200, "body": "...." },
"funnel": { "statusCode": 204, "body": "...." },
"funk": { "statusCode": 200, "body": "....", "encoding": "base64" },
"harvest": { "statusCode": 204, "body": "...." }
}
}
}
いずれかの転送先でエラーが返却された場合
いずれかの転送先から、 HTTP ステータスコードで 400
以上の値が返却された場合にエラーと判断されます。転送先に接続できなかった場合や SORACOM プラットフォーム内でエラーが発生した場合は、エラー内容に応じたステータスコードが返却されます。
{
"statusCode": 207,
"body": {
"result": "ng",
"detail": {
"beam": { "statusCode": 200, "body": "...." },
"funnel": { "statusCode": 204, "body": "...." },
"funk": { "statusCode": 200, "body": "....", "encoding": "base64" },
"harvest": { "statusCode": 400, "body": "...." }
}
}
}
カスタムレスポンス機能
レスポンスのフォーマットで「カスタム」を選択した場合、成功時のレスポンスと失敗時のレスポンスを指定できます。
すべての転送先に対して正常に送信できた場合は「成功時のレスポンス」が返却されます。いずれかの転送先でエラーが返却された場合は「失敗時のレスポンス」が返却されます。
設定 | 説明 |
---|---|
HTTP ステータスコード | 成功時および失敗時のステータスコードを指定します |
Content-Type ヘッダーの値 | レスポンスの Content-Type ヘッダーの値を指定してください。たとえば application/json を指定します。 |
Body | レスポンス Body の値を指定します。 |
ステータスコードを省略 | 当設定は TCP/UDP 送信時のレスポンスが対象となります。送信後のレスポンスにステータスコードを含みません。(Body のみが送信されます。) |