通常のAPIの動作は問題ないのですが、MakePrivateを使った時だけ、エラーが表示されて動作がしなくなる。
例) Content typeError
やったこと:
- FlutterFlow APIのMakePrivate機能を使用して、APIをプライベートにした。
- API呼び出しの「プライベートにする」をオンにした。
やったこと:
bodyTypeに応じて適切なContent-Typeヘッダーを設定し、リクエストボディを返してますが、ここが、エラーになってしまいます。
{
“error”: “Bad Request”,
“message”: “Invalid JSON format”,
“code”: 400
}
API 呼び出しの「プライベートにする」をオンにすると、Google Cloud Functions に
「ffPrivateAPICall」と呼ばれるサーバーレス関数が作成される。
その時に、出力データとして、ffPrivateApiCallがありますが、
createBodyが作成されJSON,TEXT が勝手に生成されて、何も選択ないと、createBodyは勝手にtextを選択してしまいます。
createBody関数はbodyTypeに応じて適切なContent-Typeヘッダーを設定し、リクエストボディを返すようになっています。しかし、bodyTypeが明示的に指定されていない場合、createBodyがデフォルトでtextを選択してしまうため、API呼び出しが失敗している可能性があります。
この問題を解決するには、API呼び出しの設定で、出力データのフォーマットを明示的にJSONに指定する必要があります。これにより、createBody関数がJSONを選択し、適切なContent-Typeヘッダーが設定されるため、API呼び出しが成功するはずです。 Copy
参考データ
function createBody({ headers, params, body, bodyType }) {
switch (bodyType) {
case “JSON”:
headers[“Content-Type”] = “application/json”;
return body;
case “TEXT”:
headers[“Content-Type”] = “text/plain”;
return body;
case “X_WWW_FORM_URL_ENCODED”:
headers[“Content-Type”] = “application/x-www-form-urlencoded”;
return qs.stringify(params);
}
}
【参考】FF プライベート API クラウド機能を使用すると、リクエストボディを含む POST リクエストが失敗する