需要 Lumen render() 方法到 return HTTP '200' 状态码

Need Lumen render() method to return HTTP '200' status code

构建一个简单的 Lumen API,它从 WooCommerce 获取 webhook 负载。当我的 API return 为 500 'internal error response' 时,出于可靠性考虑,WooCommerce 会自动关闭 webhook。我觉得这对我来说有点问题。

我希望我的 Lumen API 到 return 异常,例如像通常那样的错误,但状态代码始终为 200,而不是(例如)500 或 404。

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

(如何)让我的应用程序获得 return 同样有用的错误数据,但使用 HTTP 200 状态代码而不是 500 或任何其他状态代码?也许像下面这样的东西(顺便说一下,它不起作用,因为 render() 方法直接呈现,而不是实际上 return 一个字符串)。

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

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

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

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