Funk では、パブリッククラウド (FaaS) の関数 (Function) のレスポンスが、そのままデバイスに返却されます。
関数 (Function) からエラーが返却された場合は、内容に応じて、400 番台または 500 番台のステータスコードと、関数 (Function) のレスポンスが、そのままデバイスに返却されます。また、エラーの内容によっては、SORACOM ユーザーコンソールのエラーログにエラーが出力されることがあります。
Funk では、エラーコードは追加されません。
SORACOM Funk 形式
Funk のエントリポイントを利用している場合、または Unified Endpoint のレスポンスのフォーマットに SORACOMFunk
を指定している場合は、以下のようなレスポンスが返却されます。これを、SORACOM Funk 形式と呼びます。
${HTTP ステータスコード (UTF-8)} + ${半角スペース (UTF-8)} + ${関数 (Function) のレスポンス}
なお、関数 (Function) のレスポンスがテキストデータの場合は、SORACOM Funk 形式のレスポンスもテキストデータでデバイスに返却されます。一方で、関数 (Function) のレスポンスがバイナリデータの場合は、SORACOM Funk 形式のレスポンスもバイナリデータでデバイスに返却されます。
例:
関数 (Function) のレスポンス (ステータスコード) | 関数 (Function) のレスポンス (データ) | → | SORACOM Funk 形式のレスポンス |
---|---|---|---|
500 | テキストデータ NG (UTF-8 表記) | → | テキストデータ 500 NG (UTF-8 表記) |
200 | バイナリデータ abcd (Hex 表記) | → | バイナリデータ 32303020abcd (Hex 表記。 32303020 は、32 が 2 、30 が 0 、20 が半角スペースを表します。Base64 形式でエンコードされません) |
ステータスコードを省略する
グループ設定で skipStatusCode
) をオンにすると、上記の SORACOM Funk 形式のうち先頭の HTTP ステータスコードと半角スペースが省略されます。成功・エラーに関わらず、デバイスには関数 (Function) のレスポンス本体のみが返却されます。なお、この設定は UDP エントリポイントと TCP エントリポイントのレスポンスにのみ適用されます。詳しくは、レスポンスのステータスコードを省略する を参照してください。
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 形式について詳しくは、レスポンスの形式を設定する を参照してください。