需要 Lumen render() 方法返回 HTTP '200' 状态代码



构建一个简单的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);

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

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

下面的源代码在这里特别有用:https://laravel.com/api/5.5/Illuminate/Http/Response.html.

相关内容

最新更新