Если я возвращаю объект:
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
Это - то, как я делаю это в 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
Hope мой ответ был полезен.
Я предпочитаю помощника ответа сам:
return response()->json(['message' => 'Yup. This request succeeded.'], 200);