【问题标题】:Laravel: custom http status code not workingLaravel:自定义http状态码不起作用
【发布时间】:2018-11-05 10:52:30
【问题描述】:

Laravel 版本:5.5

我正在尝试从 laravel 控制器返回自定义 http 状态代码。 (使用 jQuery Ajax $.get() 调用这个 url)

在我的控制器功能中,我尝试了下面提到的两种方式,但它不起作用。

  1. 这个返回错误“方法setStatusCode不存在。”

    return response()->setStatusCode(202);
    
  2. 这个不会抛出错误,但总是返回 200。

    $response = new Response();
    $response->setStatusCode(202);
    $response->header('custom', 555);
    return $response;`
    

【问题讨论】:

    标签: php laravel response http-status-codes custom-headers


    【解决方案1】:

    像这样使用它:

    return response()->json("response content", 202);
    //or
    return response()->make("response content", 202);
    

    查看https://laravel.com/api/5.0/Illuminate/Routing/ResponseFactory.html 以获取更详细的文档。

    【讨论】:

    • 我仍然想知道为什么不工作。顺便说一句,我正在从 jQuery ajax 调用 http 请求。有什么关系吗?
    • response() 函数返回响应 FACTORY 而不是响应实例,因此 setStatusCode 未在工厂类中定义。您需要创建一个响应实例来设置状态码。 make 和 json 函数可以做到这一点。您使用的第二个选项失败可能是因为您使用的不是 Symfony\Component\HttpFoundation\Response 类,而是其他一些 Response 类。
    • 我使用 use Illuminate\Http\Response; 现在使用 use Symfony\Component\HttpFoundation\Response; 仍然返回 200 和 #2。
    • 你猜怎么着?我应该删除这个线程。你所有的代码都在工作。原因是我使用控制器公共函数调用内部函数并从第二个函数返回。现在我更新了代码以从第二个和调用者公共函数返回。有用。对不起。但这不是问题,所以删除它。
    【解决方案2】:

    您可以使用return response()->json(['hello' => $value],201);

    【讨论】:

    • 使用use Illuminate\Http\Response;返回message Method json does not exist.
    • response()->json() 应该这样做
    • 你猜怎么着?我应该删除这个线程。你所有的代码都在工作。原因是我使用控制器公共函数调用内部函数并从第二个函数返回。现在我更新了代码以从第二个和调用者公共函数返回。有用。对不起。但这不是问题,所以删除它。
    • 不要删除问题,它可能对遇到相同问题的人有用:-)
    【解决方案3】:

    让我再介绍几种使用方法。也许你正在寻找没有 json 的类似的东西。

    response(null)->setStatusCode(202);
    response(null, 202);
    

    【讨论】:

      猜你喜欢
      • 2015-09-10
      • 1970-01-01
      • 2014-08-01
      • 2019-12-04
      • 2019-01-25
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多