Laravelのjsonレスポンスでスラッシュをエスケープしない
Laravelでjson形式のレスポンスを返却する際に、内部でjson_encode関数が利用されるため、スラッシュがエスケープされて表示されます。
return response()->json([ "active" => true, "iss" => "http://www.yahoo.co.jp/", "scope" => "openid" ]);
レスポンス
{ "active":true, "iss":"http:\/\/www.yahoo.co.jp\/", "scope":"openid" }
json_encodeのJSON_UNESCAPED_SLASHESを指定すると良さそうです。
ドキュメントを確認すると以下の引数定義のため、
省略していたレスポンスコードなどをまとめて指定するようにします。
response()->json($data, $status, $headers, $options))
実装
return response()->json([ "active" => true, "iss" => "http://www.yahoo.co.jp/", "scope" => "openid"], 200, ['Content-Type' => 'application/json'], JSON_UNESCAPED_SLASHES);
レスポンス
{ "active":true, "iss":"http://www.yahoo.co.jp/", "scope":"openid" }
成功しました。JSON_PRETTY_PRINTをよく指定するようなので、合わせて指定する場合は以下のようになります。
return response()->json([ "active" => true, "iss" => "http://www.yahoo.co.jp/", "scope" => "openid"], 200, ['Content-Type' => 'application/json'], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
以上です。