java – Angular $http – spring – throws Exception但http状态为200
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Angular $http – spring – throws Exception但http状态为200,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1642字,纯文字阅读大概需要3分钟。
内容图文
我在使用Spring和angular的应用程序上遇到了一个我不理解的行为. http请求中存在异常.我在下面做了测试.
@RequestMapping(value = "/contract/upload/excel", method = RequestMethod.POST)
public String uploadContractExcel(HttpServletRequest request, ModelMap model) {
if(true) {
throw new RuntimeException("my code is broken");
}
...
在$http函数的JavaScript中,而不是进入错误块,它返回到状态代码为200的成功块 – 确定.所以我无法处理任何异常.
$http({
method : 'POST',
url : resolveAjax,
data : formData
}).then(
function successCallback(response) {
var data = response.data;
if (data.upload_error === "true") {
$scope.busy = false;
$scope.upload_error_message = data.upload_error_message;
} else {
$scope.contractSummary = angular
.fromJson(data.reference_excel_resolved);
$scope.busy = false;
$scope.tabindex = $scope.tabindex * 1 + 1;
}
},
function errorCallback(response) {
$scope.upload_error_message = 'Oups something went wrong';
});
有谁知道会发生什么?
谢谢
解决方法:
如果您希望客户端收到错误的HTTP状态(如400等),则应在控制器中返回此类状态.抛出异常是不够的.
你有几个选择;不抛出异常或创建一个处理异常的@ControllerAdvice.
伪代码:
@RequestMapping(value = "/url", method = POST)
public ResponseEntity postYourObject(@RequestBody YourObject object) {
if (true) {
return new ResponseEntity<>("Something happened", HttpStatus.BAD_REQUEST);
}
}
或者继续抛出异常并创建这样的控制器建议.
@ControllerAdvice
public class GlobalControllerBehavior {
@ExceptionHandler
public ResponseEntity handleException(YourException e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
}
最重要的是,如果您不返回像4xx或5xx这样的HTTP状态代码,那么您的JavaScript错误块将不会被激活.
内容总结
以上是互联网集市为您收集整理的java – Angular $http – spring – throws Exception但http状态为200全部内容,希望文章能够帮你解决java – Angular $http – spring – throws Exception但http状态为200所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。