I'm getting into api controllers
and am wondering if this index function
:
public function index()
{
$data = DB::table('galleries')->get();
return response()->json($data);
}
inside my api controller
has to be returned with response()->json()
or if it is OK to just return the variable:
public function index()
{
$data = DB::table('galleries')->get();
return $data;
}
Both seem to work. Are there reasons to use the former one?
the return $data
will just convert the $data
into a json response. no header will be set and your frontend will not recognize it as a json object.
return response()
will return a full Response
instance. from the doc
Returning a full Response instance allows you to customize the response's HTTP status code and headers. A Response instance inherits from the
Symfony\Component\HttpFoundation\Response
class, which provides a variety of methods for building HTTP responses
for return response()->json()
method
The
json
method will automatically set theContent-Type
header toapplication/json
, as well as convert the given array to JSON using thejson_encode
PHP function
so this will be recognised as json object in your frontend. Read more at laravel doc.