Я вхожу в api controllers и мне интересно, если это index function:
public function index()
{
$data = DB::table('galleries')->get();
return response()->json($data);
}
внутри моего api controller должен быть возвращен с response()->json() или, если это нормально, просто вернуть переменную:
public function index()
{
$data = DB::table('galleries')->get();
return $data;
}
Оба, кажется, работают. Есть ли причины использовать первый?






Оба кажутся правильными, но если вы отправите в формате json, это будет формально, и на сайте fornt-end они могут легко использоваться
return $data просто преобразует $data в ответ json. заголовок не будет установлен, и ваш интерфейс не распознает его как объект json.
return response() вернет полный Response экземпляр. из документа
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\Responseclass, which provides a variety of methods for building HTTP responses
для return response()->json() метода
The
jsonmethod will automatically set theContent-Typeheader toapplication/json, as well as convert the given array to JSON using thejson_encodePHP function
так что это будет распознано как объект json в вашем интерфейсе. Подробнее читайте на laravel документ.
Когда вы отправляете что-то в качестве ответа, который еще не является экземпляром Response, тогда Laravel создаст новый экземпляр Response с этим в качестве содержимого. Когда ответ отправляется и этот объект является массивом (или массивом) или чем-то, что можно преобразовать в JSON, он отправляется как ответ JSON. В этот момент все соответствующие заголовки будут правильными.
Есть две части исходного кода, которые следует учитывать, если вам интересно, как это работает:
Response, и создает его, если нет.Если вам нужно мое мнение, вам следует сделать response()->json(...), который создает экземпляр JsonResponse, который не может быть двусмысленным, потому что в противном случае вы полагаетесь на недокументированное поведение, которое может быть изменено.