我只有API laravel项目。如果我通过设置APP_DEBUG=false
关闭.env
文件中的调试模式,我的应用程序会抛出Server error
错误,这些错误不应该显示给用户。
但是它返回json这样的响应:
{
"message": "Server Error"
}
我想添加代码键到它的屁股好。我正在努力实现:
{
"code": 500,
"message": "Server Error"
}
到目前为止,我尝试了什么(Handler
的register
方法):
$this->renderable(function (Throwable|Exception $e) {
return response()->json([
'code' => $e->getCode(),
'message' => $e->getMessage()
], $e->getCode());
});
但这将返回异常消息,不应该显示给用户。我需要这样的smth:
$this->renderable(function (Throwable|Exception $e) {
// ReportableException doesn't exist in laravel
if($e instanceof ReportableException){
return response()->json([
'code' => 500,
'message' => 'Server error'
], 500);
}
return response()->json([
'code' => $e->getCode(),
'message' => $e->getMessage()
], $e->getCode());
});
2条答案
按热度按时间4nkexdtk1#
我发现有一个
isHttpException
方法可以用来判断异常是否可以报告给用户,这就是我的解决方案:a64a0gku2#
您可以访问HttpResponseException,因此可以执行以下操作:
它看起来像这样:
希望这对你有用。