Laravel - Возвращает json вместе с кодом состояния http


Если я возвращаю объект:

return Response::json([
    'hello' => $value
]);

Код состояния будет 200. Как я могу изменить его на 201 с сообщением и отправить его с объектом json?.

Я не знаю, есть ли способ просто установить код состояния в Laravel.

Author: Tushar, 2015-06-30

5 answers

Вы можете использовать http_response_code() чтобы задать код ответа HTTP.

Если вы не передадите никаких параметров, то http_response_code получит текущий код состояния. Если вы передадите параметр, он установит код ответа.

http_response_code(201); // Set response status code to 201

Для Laravel (Ссылка из: https://stackoverflow.com/a/14717895/2025923):

return Response::json([
    'hello' => $value
], 201); // Status code here
 68
Author: Tushar, 2017-05-23 12:34:50

Вот как я это делаю в Laravel 5

return Response::json(['hello' => $value],201);
 33
Author: Jeremy C., 2015-06-30 06:38:13

Я думаю, что лучше держать ваш ответ под единым контролем, и по этой причине я нашел самое официальное решение.

response()->json([...])->setStatusCode(Response::HTTP_OK, Response::$statusTexts[Response::HTTP_OK]);

Добавьте это после namespace объявления:

use Illuminate\Http\Response;
 13
Author: TKoutsou, 2016-10-31 13:42:45

Существует несколько способов

return \Response::json(['hello' => $value], STATUS_CODE);

return response()->json(['hello' => $value], STATUS_CODE);

Где STATUS_CODE - это ваш код состояния HTTP, который вы хотите отправить. Оба они идентичны.

Если вы используете красноречивую модель, то простой возврат также будет автоматически преобразован в JSON по умолчанию, например,

return User::all();
 6
Author: iSensical, 2017-09-29 14:34:21
return response(['title' => trans('web.errors.duplicate_title')], 422); //Unprocessable Entity

Надеюсь, мой ответ был полезен.

 -1
Author: Mikayel Margaryan, 2018-05-08 15:08:00