HTTPレスポンスの構造 — ステータスコード・ヘッダー・ボディの役割
HTTPレスポンスはステータスライン・ヘッダー・ボディの3要素で構成されます。APIのモック設計やテストケースの作成では、正常系だけでなく各種エラーレスポンスのフォーマットを正確に定義することが重要です。
ステータスコードのカテゴリと使い分け
1xx(情報)・2xx(成功)・3xx(リダイレクト)・4xx(クライアントエラー)・5xx(サーバーエラー)の5カテゴリに分類されます。REST APIで頻繁に使うコード:200 OK(成功)・201 Created(作成成功)・204 No Content(削除成功等)・400 Bad Request(バリデーションエラー)・401 Unauthorized(認証エラー)・403 Forbidden(認可エラー)・404 Not Found・422 Unprocessable Entity(入力値エラー)・429 Too Many Requests(レート制限)・500 Internal Server Error。
Content-Typeヘッダーの重要性
Content-Typeはレスポンスボディの形式をクライアントに伝えるヘッダーです。application/jsonはJSONボディを示し、クライアントはJSON.parse()で解析します。text/htmlはブラウザがHTMLとしてレンダリングします。application/octet-streamはバイナリデータのダウンロードに使われます。charsetを明示しないとブラウザが文字コードを誤検出する場合があります(Content-Type: text/html; charset=utf-8が推奨)。
CORSヘッダーの設定方法
クロスオリジンリクエストを許可するには、レスポンスにAccess-Control-Allow-Origin: *(または特定ドメイン)を含める必要があります。プリフライト(OPTIONSリクエスト)にはAccess-Control-Allow-Methods: GET, POST, PUT, DELETEとAccess-Control-Allow-Headers: Content-Type, Authorizationも必要です。認証情報(Cookie/Bearer)を含む場合はAccess-Control-Allow-Credentials: trueとし、Allow-Originにワイルドカードは使えません。
モックAPIサーバーの作り方
HTTP Response Mock Builderで設計したレスポンスはNode.jsのhttp.createServer()でそのまま実装できます。res.writeHead(statusCode, headers)でステータスとヘッダーを設定し、res.end(body)でボディを送信します。json-serverやMSW(Mock Service Worker)を使うとよりリッチなモック環境を構築できます。MSWはブラウザのService Workerとして動作するため、実際のHTTPリクエストをインターセプトしてモックレスポンスを返せます。