Если я возвращаю объект:
return Response::json([
'hello' => $value
]);
код статуса будет 200. Как я могу изменить его на 201, с сообщением и отправить его с помощью json-объекта?.
Я не знаю, есть ли способ установить код состояния в Laravel.
Вы можете использовать http_response_code()
для установки кода ответа HTTP.
Если вы не передадите никаких параметров, то http_response_code получит текущий код состояния. Если вы передадите параметр, он установит код ответа.
http_response_code(201); // Set response status code to 201
Для Laravel (Ссылка от: https://stackoverflow.com/questions/14704644/laravel-wont-obey-status-code):
return Response::json([
'hello' => $value
], 201); // Status code here
Вот как я это делаю в Laravel 5
return Response::json(['hello' => $value],201);
Я считаю, что лучше всего держать свой ответ под единым контролем, и по этой причине я нашел наиболее официальное решение.
response()->json([...])->setStatusCode(Response::HTTP_OK, Response::$statusTexts[Response::HTTP_OK]);
добавить это после объявления namespace
:
use Illuminate\Http\Response;
Существует несколько способов
return \Response::json(['hello' => $value], STATUS_CODE);
return response()->json(['hello' => $value], STATUS_CODE);
где STATUS_CODE - ваш код статуса HTTP, который вы хотите отправить. Оба идентичны.
если вы используете модель Eloquent, тогда простой возврат также будет автоматически преобразован в JSON по умолчанию, например,
return User::all();
response()->json([], 200);
подходит для цели в этой ситуации? Или 200 неявных?