web-dev-qa-db-ja.com

Laravel-HTTPステータスコードとともにJSONを返す

オブジェクトを返す場合:

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

ステータスコードは200になります。メッセージで201に変更し、jsonオブジェクトで送信するにはどうすればよいですか。

Laravelにステータスコードを設定する方法があるかどうかはわかりません。

61
Galivan

http_response_code() を使用して、HTTP応答コードを設定できます。

パラメータを渡さない場合、http_response_codeは現在のステータスコードを取得します。パラメータを渡すと、応答コードが設定されます。

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

Laravelの場合(参照元: https://stackoverflow.com/a/14717895/202592 ):

return Response::json([
    'hello' => $value
], 201); // Status code here
92
Tushar

これがLaravel 5でのやり方です。

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

または、ヘルパー関数を使用します:

return response()->json(['hello' => $value], 201); 
49
Jeremy C.

回答を単一の管理下に置く方が良いと思います。そのため、最も公式な解決策を見つけました。

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

namespace宣言の後にこれを追加します。

use Illuminate\Http\Response;
23
TKoutsou

複数の方法があります

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

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

sTATUS_CODEは、送信するHTTPステータスコードです。両方とも同じです。

eloquentモデルを使用している場合、単純な戻り値も jSONに自動変換 デフォルトでは、

return User::all();
8
iSensical
return response(['title' => trans('web.errors.duplicate_title')], 422); //Unprocessable Entity

私の答えがお役に立てば幸いです。

1

正しい応答コードを応答として送信する適切な方法を次に示します

return http_response_code();
0
Muhammad Owais

私は自分で応答ヘルパーを好みます:

    return response()->json(['message' => 'Yup. This request succeeded.'], 200);
0
Dylan Pierce