如果我返回一个对象:
return Response::json([
'hello' => $value
]);
状态代码将为200。如何将其更改为201,并显示一条消息并与json对象一起发送?
我不知道是否有一种方法可以在Laravel中设置状态代码。
Answers:
您可以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
response()->json([], 200);
在这种情况下是否适合目的?还是200隐式?
use Illuminate\Http\Response;
并return new Response(['message' => 'test'], 422);
为我工作
这就是我在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(['title' => trans('web.errors.duplicate_title')], 422); //Unprocessable Entity
希望我的回答对您有所帮助。
最好使用助手功能而不是Facades来完成。从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