如果我返回一个对象:
return Response::json([
'hello' => $value
]);
状态码将为200。如何将其更改为201,并在JSON对象中附上消息发送?
我不知道是否有一种方法可以仅在Laravel中设置状态代码。
return Response::json([
'hello' => $value
]);
状态码将为200。如何将其更改为201,并在JSON对象中附上消息发送?
我不知道是否有一种方法可以仅在Laravel中设置状态代码。
您可以使用http_response_code()
设置HTTP响应代码。
如果您不传递任何参数,
http_response_code
将获取当前的状态码。如果您传递一个参数,则会设置响应代码。
http_response_code(201); // Set response status code to 201
对于Laravel(参考来源:https://dev59.com/RW7Xa4cB1Zd3GeqPlxVJ#14717895):
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();
Laravel 7.*
您无需指定JSON响应,因为它会自动将其转换为JSON。
return response(['Message'=>'Wrong Credintals'], 400);
return response(['title' => trans('web.errors.duplicate_title')], 422); //Unprocessable Entity
我经常使用这种类型的JSON响应格式,它可以帮助您...
return response()->json(['success'=>'true','message' => 'Successfully Done.'], 200);
最好使用辅助函数而不是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
我个人更喜欢使用响应助手:
return response()->json(['message' => 'Yup. This request succeeded.'], 200);
use Symfony\Component\HttpFoundation\Response;
return response()->json([
'message' => 'success',
'status' => Response::HTTP_OK
]);
response()->json([], 200);
是否适用?或者200是隐含的吗? - Jonathan