首页 文章

Laravel - 返回json以及http状态代码

提问于
浏览
42

如果我返回一个对象:

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

状态代码将为200.如何将消息更改为201,并使用json对象将其发送?

我不知道是否有办法在Laravel中设置状态代码 .

5 回答

  • 34

    我认为将您的响应保持在单一控制之下是更好的做法,因此我找到了最官方的解决方案 .

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

    namespace 声明后添加:

    use Illuminate\Http\Response;
    
  • 6

    这就是我在Laravel 5中的表现

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

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

    有多种方式

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

    其中STATUS_CODE是您要发送的HTTP状态代码 . 两者都是相同的 .

    如果您使用的是Eloquent模型,那么简单的返回也将是 auto converted in JSON 默认情况下,如,

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

    希望我的回答很有帮助 .

相关问题