web-dev-qa-db-fra.com

Laravel - Retourne JSON avec le code de statut http

Si je retourne un objet:

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

le code d'état sera 200. Comment puis-je le changer en 201, avec un message et l'envoyer avec l'objet json ?.

Je ne sais pas s'il existe un moyen de définir simplement le code d'état dans Laravel.

45
Galivan

Vous pouvez utiliser http_response_code() pour définir le code de réponse HTTP.

Si vous ne transmettez aucun paramètre, http_response_code obtiendra le code d'état actuel. Si vous transmettez un paramètre, il définira le code de réponse.

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

Pour Laravel (Référence: https://stackoverflow.com/a/14717895/2025923 ):

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

Voici comment je le fais dans Laravel 5

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

Ou en utilisant une fonction d'assistance:

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

Je pense qu'il est préférable de garder votre réponse sous contrôle unique et c'est pour cette raison que j'ai trouvé la solution la plus officielle.

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

ajoutez ceci après la déclaration namespace:

use Illuminate\Http\Response;
20
TKoutsou

Il y a plusieurs façons 

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

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

où STATUS_CODE est le code de statut HTTP que vous souhaitez envoyer. Les deux sont identiques. 

si vous utilisez le modèle Eloquent, le retour simple sera également auto converti en JSON  par défaut comme,

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

J'espère que ma réponse a été utile.

1

Voici le moyen approprié d'envoyer le code de réponse correct en réponse

return http_response_code();
0
Muhammad Owais

Je préfère l'aide-réponse moi-même:

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