Funk では、転送先のパブリッククラウド (FaaS) の Function のレスポンスが、そのままデバイスに返却されます。
転送先の Function からエラーが返却された場合は、内容に応じて、400 番台または 500 番台のステータスコードと、転送先の Function のレスポンスが、そのままデバイスに返却されます。また、エラーの内容によっては、SORACOM ユーザーコンソールのエラーログにエラーが出力されることがあります。
Funk では、エラーコードは追加されません。
SORACOM Funk 形式
Funk のエントリポイントを利用している場合、または Unified Endpoint のレスポンスのフォーマットに SORACOMFunk
を指定している場合は、以下のようなレスポンスが返却されます。これを、SORACOM Funk 形式と呼びます。
${HTTP ステータスコード (UTF-8)} + ${半角スペース (UTF-8)} + ${転送先のレスポンス}
なお、転送先のレスポンスがテキストデータの場合は、SORACOM Funk 形式のレスポンスもテキストデータで、デバイスに返却されます。一方で、転送先のレスポンスがバイナリデータの場合は、SORACOM Funk 形式のレスポンスもバイナリデータで、デバイスに返却されます。
例:
転送先のレスポンス (ステータスコード) | 転送先のレスポンス (データ) | → | SORACOM Funk 形式のレスポンス |
---|---|---|---|
500 | テキストデータ NG (UTF-8 表記) | → | テキストデータ 500 NG (UTF-8 表記) |
200 | バイナリデータ abcd (Hex 表記) | → | バイナリデータ 32303020abcd (Hex 表記。 32303020 は、32 が 2 、30 が 0 、20 が半角スペースを表します。Base64 形式でエンコードされません) |
Unified Endpoint の Unified 形式
Unified Endpoint を利用している場合に、レスポンスの形式を Unified
にしているときは、以下のようにすべてのレスポンスがまとめられて、デバイスに返却されます。Funk のレスポンスの body は、常に Base64 形式でエンコードされます。
{
"statusCode": 207,
"body": {
"result": "ng",
"detail": {
"beam": { "statusCode": 200, "body": "...." },
"funnel": { "statusCode": 204, "body": "...." },
"funk": { "statusCode": 400, "body": "....", "encoding": "base64" },
"harvest": { "statusCode": 400, "body": "...." }
}
}
}
Unified 形式について詳しくは、レスポンスの形式を設定する を参照してください。