結論
return {
status: 500,
error: 'error message',
items: {返したいアイテム}
}
経緯
Cloud Functionsの中でエラーが起きた際にどのようにレスポンスを返すかですが、try-catchせずに普通にエラーが起きるまたはthrow Errorすると500エラーがレスポンスとして返ってきます。
しかしHTTP status codeを変えてエラーを返したかったり、エラーの際にも正常なレスポンスの際と同じようなデータ形式でレスポンスを返したいというケースの際にどうすれば良いか困りました。
詳細
export const testFunction = functions.region("your-region").https.onCall(async (data, context) => {
Cloud Functionsの関数定義の中のreturnにstatus
として任意のHTTP status codeを返すことで設定することが出来ます。
他の値を設定しても、それに関しては普段のレスポンス通りdata
キーの中に入れて返してくれるので
return {
status: 500,
error: 'error message',
data: {
items: {返したいアイテム}
}
}
の様にする必要はありません。