Laravelでjsonを返すときにContent-Typeがapplication/jsonにならないときの対策

先日、LaravelでDBから取得したデータをクライアント側にjsonで返す機能を作っていました。

その際、対象のテーブルによってはレスポンスヘッダーのContent-Typeがapplication/jsonにならず、text/htmlになるパターンがいくつか発生しました。

その時の原因と解決方法をメモがてら記事にします。

目次

原因

データを返した後にLaravel側で何かしらの処理がされていることが原因だったようです。

対策

対策としては、jsonデータを返した後に「exit;」するだけ。

結果、どのパターンでもContent-Typeがapplication/jsonになるようになりました。

参考(ソースコード)

NGパターン
$res = json_encode($data, JSON_UNESCAPED_UNICODE);
header("Content-Type: application/json; charset=UTF-8");
echo $res;
return;
OKパターン
$res = json_encode($data, JSON_UNESCAPED_UNICODE);
header("Content-Type: application/json; charset=UTF-8");
echo $res;
exit;

ちなみに上記では出力を「echo」で行ってますが、「return response()->json($res);」で置き換えることも可能です。
※今回の開発では日本語がASCII表示になるので利用しませんでした

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

関連広告

コメント

コメントする

8 − three =

目次