php Laravel -返回json沿着http状态代码

iecba09b  于 2022-10-30  发布在  PHP
关注(0)|答案(9)|浏览(163)

如果我返回一个对象:

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

状态代码将是200。我如何将其更改为201,并使用消息和json对象发送它?
我不知道是否有一种方法可以在Laravel中设置状态代码。

h22fl7wq

h22fl7wq1#

您可以使用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
svmlkihl

svmlkihl2#

这就是我在拉拉威尔5号的做法

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

或者使用helper函数:

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

uyhoqukh3#

我认为这是更好的做法,保持你的React在单一的控制,并为此原因,我找到了最正式的解决方案。

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

namespace声明后添加以下内容:

use Illuminate\Http\Response;
ogsagwnx

ogsagwnx4#

有多种方法

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

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

其中STATUS_CODE是您要发送的HTTP状态代码。两者是相同的。
如果您使用是Eloquent模型,那么简单返回也会被默认自动转换为JSON,例如:

return User::all();
kjthegm6

kjthegm65#

laravel 7.* 您不必指定JSONRESPONSE,因为它会自动将其转换为JSON

return response(['Message'=>'Wrong Credintals'], 400);
bwntbbo3

bwntbbo36#

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

希望我的回答对你有帮助。

mxg2im7a

mxg2im7a7#

最好使用辅助函数,而不是外观。此解决方案将在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
2ekbmq32

2ekbmq328#

我总是使用这种类型的json响应格式,这将帮助您...

return response()->json(['success'=>'true','message' => 'Successfully Done.'], 200);
bkkx9g8r

bkkx9g8r9#

我自己更喜欢响应助手:

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

相关问题