HTTP の no-data 成功応答は body ではなく status と client 変換まで含めて正規化する
テスト
HTTP
APIクライアント
知識
判断
運用
API で「データなし」を成功応答として表す場合、サーバー側の型や service の戻り値だけでは、クライアントが受け取る値を保証できない。フレームワークは null を空ボディに変換することがあり、API クライアントは 204 や空ボディの成功応答を空オブジェクトなどに変換することがある。
この差はアプリ側の truthy 判定で誤動作になる。データが無い通常状態を、空オブジェクトのような truthy な値として扱うと、「存在しないもの」を存在中・進行中として UI が解釈する。
判断基準は、契約を先に一つに決めること。JSON null を返す契約なら、HTTP レイヤで実 body が JSON null になっていることまで固定する。204 No Content を返す契約なら、client wrapper で status を見てアプリ内部の null へ正規化する。どちらの場合も、アプリの各利用箇所に空ボディや空オブジェクトの fallback を散らさず、API 境界で一度だけ正規化する。
検証では service unit test だけで終わらせない。実 HTTP レスポンスの status と body、さらに API client wrapper の戻り値を確認する。service が null を返すテストは、フレームワークやクライアントのレスポンス変換で起きる問題を捕まえられない。