【问题标题】:Need Lumen render() method to return HTTP '200' status code需要 Lumen render() 方法返回 HTTP \'200\' 状态码
【发布时间】:2022-12-25 17:52:30
【问题描述】:

构建一个简单的 Lumen API,从 WooCommerce 获取 webhook 负载。当我的 API 返回 500“内部错误响应”时,出于可靠性考虑,WooCommerce 会自动关闭 webhook。我觉得这对我来说有点问题。

我希望我的 Lumen API 返回异常,例如像通常那样的错误,但总是带有 200 状态代码,而不是(例如)500 或 404。

我了解到我需要调整 /App/Exceptions/Handler.php,更具体地说是 render() 方法。它包含行:return parent::render($request, $exception);,它生成并返回典型的、有用的 Laravel/Lumen 错误数据。

(如何)我可以让我的应用程序返回同样有用的错误数据,但带有 HTTP 200 状态代码而不是 500 或任何其他状态代码?也许像下面这样的东西(顺便说一句,render() 方法直接渲染,而不是实际返回一个字符串,这不起作用)。

return response(parent::render($request, $exception), 200);

【问题讨论】:

    标签: exception lumen


    【解决方案1】:

    render() 方法实际上返回一个响应对象,该对象具有响应 HTML 作为属性。因此,我上面的努力已经接近解决方案了。我只需要从响应对象中检索 HTML 内容。因此,以下是解决方案:

    $response = parent::render($request, $exception);
    return response($response->content(), 200);
    

    以下资源对于到达此处特别有用:https://laravel.com/api/5.5/Illuminate/Http/Response.html

    【讨论】:

      猜你喜欢
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2019-04-23
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多