Если я верну объект:
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/a/14717895/2025923 ):
return Response::json([
'hello' => $value
], 201); // Status code here
response()->json([], 200);
для этой ситуации цель? Или 200 неявно?
use Illuminate\Http\Response;
и return new Response(['message' => 'test'], 422);
работал на меня
Вот как я это делаю в Laravel 5
return Response::json(['hello' => $value],201);
Или используя вспомогательную функцию:
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();
return response(['title' => trans('web.errors.duplicate_title')], 422); //Unprocessable Entity
Надеюсь, мой ответ был полезен.
Я предпочитаю помощника ответа:
return response()->json(['message' => 'Yup. This request succeeded.'], 200);
Лучше делать это с помощью вспомогательных функций, а не фасадов . Это решение будет хорошо работать с Laravel 5.7 и выше.
//import dependency
use Illuminate\Http\Response;
//snippet
return \response()->json([
'status' => '403',//sample entry
'message' => 'ACCOUNT ACTION HAS BEEN DISABLED',//sample message
], Response::HTTP_FORBIDDEN);//Illuminate\Http\Response sets appropriate headers