web-dev-qa-db-de.com

Laravel - Json zusammen mit dem HTTP-Statuscode zurückgeben

Wenn ich ein Objekt zurückschicke:

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

der Statuscode lautet 200. Wie kann ich ihn mit einer Nachricht in 201 ändern und mit dem Json-Objekt senden ?.

Ich weiß nicht, ob es eine Möglichkeit gibt, den Statuscode in Laravel einzustellen.

45
Galivan

Sie können http_response_code() verwenden, um den HTTP-Antwortcode festzulegen.

Wenn Sie keine Parameter übergeben, erhält http_response_code den aktuellen Statuscode. Wenn Sie einen Parameter übergeben, wird der Antwortcode festgelegt.

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

Für Laravel (Referenz von: https://stackoverflow.com/a/14717895/2025923 ):

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

So mache ich es in Laravel 5

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

Oder mit einer Hilfsfunktion:

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

Ich denke, es ist eine bessere Praxis, Ihre Reaktion unter einer einzigen Kontrolle zu halten, und aus diesem Grund habe ich die offiziellste Lösung gefunden.

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

fügen Sie dies nach der namespace-Deklaration hinzu:

use Illuminate\Http\Response;
20
TKoutsou

Es gibt mehrere Möglichkeiten 

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

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

dabei ist STATUS_CODE der HTTP-Statuscode, den Sie senden möchten. Beide sind identisch. 

wenn Sie ein Eloquent-Modell verwenden, ist auch die einfache Rückkehr möglich automatisch in JSON konvertiert  standardmäßig wie

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

Hoffe, meine Antwort war hilfreich.

1

So senden Sie den richtigen Antwortcode als Antwort

return http_response_code();
0
Muhammad Owais

Ich bevorzuge den Antworthelfer selbst:

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