[php] Laravel-http 상태 코드와 함께 json 반환

객체를 반환하면 :

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

상태 코드는 200이됩니다. 메시지와 함께 201로 변경하고 json 객체와 함께 보내려면 어떻게해야합니까?

라 라벨에서 상태 코드를 설정하는 방법이 있는지 모르겠습니다.



답변

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

내 대답이 도움이 되었기를 바랍니다.


답변

나는 응답 도우미를 선호합니다.

    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