我现在正试图从服务器获取响应,如果服务器响应422 Unprocessable Entity
,我可以修改我的功能,以便我们可以对用户有不同的响应。
现在有2个潜在错误,第一个是
1)用户资金不足或信用卡因任何原因被拒绝
{"errors": ["The credit card on file could not be charged."]}
2)用户已订阅产品
{"errors": ["Cannot reactivate a subscription that is not marked \"Canceled\", \"Unpaid\", \"Trial Ended\", or \"On Hold\"."]}
响应是通过JSON发送的,我想知道在Laravel中我能做些什么来检测这两个问题?感谢您的帮助,谢谢。
答案 0 :(得分:-1)
我会使用Exceptions\Handler.php
文件来正确处理这些异常。
public function render($request, Exception $e)
{
// 404 Errors
// Either the route does not exist or a model is not found when performing an Eloquent query
if($e instanceof NotFoundHttpException || $e instanceof ModelNotFoundException) {
return response()->json([
'error' => 'Not found'
], 404);
} elseif ($e instanceof HttpException) {
return response()->json([
'error' => 'Unsupported Media Type'
], 415);
} elseif ($e instanceof AuthenticationException) {
return response()->json([
'error' => 'Forbidden. Unauthenticated.'
], 403);
} elseif ($e instanceof QueryException) {
return response()->json([
'error' => 'Unresolvable Query.',
'message' => $e->getMessage()
], 400);
}
return parent::render($request, $e);
}
如您所见,您可以捕获异常并返回正确的JSON响应。
为了更好地区分您是想要返回JSON还是正常'消息,如果您请求的是AJAX请求并且您想要返回JSON或某事,则可以使用if($request->ajax()) { ... } else { ... }
进行检查。其他