ラボ > PHP:通信絡み

HTTPコード:204で本文無し

APIとかで「HTTPコード:204」を返すときはボディは空っぽになる

作成日:2019-06-07, 更新日:2019-06-07

経緯

・APIで各レスポンスでHTTPコードとボディを色々とセット
・テストすると「HTTPコード:204」のときのみボディが空っぽになる。
・あちこちログを仕込んだりしてみても不審な点は無し

ふと気づいたのが「204」は「No Content」ってヤツ。
レスポンスボディが空っぽになるのが正解っぽい。
→テストに使っていたブラウザがChromeなので、Chrome側が勝手にしたのかもしれない

▼API側の出力部のサンプル

$code = 204;
$response = array(
  〇〇〇 => 〇〇〇,
  〇〇〇 => 〇〇〇,
);

$response_body = json_encode($response);

http_response_code($code);
header('Cache-Control: no-cache');
header('Content-Type: application/json;charset=UTF-8');
header('Content-Length: ' . strlen($response_body) );

echo $response_body;
exit;