我正在通过 Laravel 5.2 作为 API 构建我的应用程序,无论错误代码如何,我都需要所有类型的异常都为 json。
我做了这样的事情:
/**
* Render an exception into an HTTP response.
*
* @param 'Illuminate'Http'Request $request
* @param 'Exception $e
* @return 'Illuminate'Http'Response
*/
public function render($request, Exception $e)
{
return response([
'success' => false,
'error' => [
'code' => $e->getCode(),
'message' => $e->getMessage(),
],
], $this->convertExceptionToResponse($e)->getStatusCode());
}
它做了很多技巧,但显然这还不够好,因为如果我收到 404 错误,$e->getMessage
是空的。
404 错误响应示例:
{
"success": false,
"error": {
"code": 0,
"message": ""
}
}
将异常响应为 json 的最佳方式是什么?
也许你应该尝试:
public function render($request, Exception $e)
{
return response(json_encode([
'success' => false,
'error' => [
'code' => $e->getCode(),
'message' => $e->getMessage(),
],
]), $this->convertExceptionToResponse($e)->getStatusCode())
->header('Content-Type', 'application/json');
}