服务正在春天工作但是什么时候 我尝试以角度调用服务,结果对象为空并且不返回任何内容
服务代码:
公共类CalculatorController {
@CrossOrigin(origins = "http://localhost:8090")
@GetMapping("/calc/{number1}/{number2}")
public Calculator calc(@PathVariable int number1,
@PathVariable int number2){
Calculator c = new Calculator(number1 , number2) ;
return c;
}
}
控制器js代码:
angular.module("myApp", [])
.controller("myCtrl", function($scope , $http) {
$http.get('http://localhost:8090/calc/5/8').
then(function (response)
{ $scope.result = response.data; }) ;
});
html代码:
<!DOCTYPE html>
<html ng-app="myApp">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<head>
<title>Hello AngularJS</title>
<script src="moule.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div ng-controller="myCtrl">
<p><span class="add">add is {{ result.add }}</span></p>
<span class="sub">sub is {{ result.sub }}</span>
</div>
</body>
</html>
提前致谢
答案 0 :(得分:2)
您的CORS过滤器(@CrossOrigin
)设置为http://localhost:8090
,但似乎这是您的服务器端代码所在的位置。 CORS应该允许服务器外部的源查询您的API,这意味着您需要提供客户端端口信息。
假设您的服务器端在8090
上运行,而您的客户端在8080
上运行。您在服务器端的过滤器应允许8080
从浏览器使用API。
尝试更改CORS过滤器以匹配客户端而非服务器端。
另外,查看chrome调试工具(F12
)以查看是否有CORS异常。
有关CORS的更多信息:
答案 1 :(得分:1)
它应该是这样的。您忘记为方法添加@ResponseBody
注释
@CrossOrigin(origins = "http://localhost:8090")
@GetMapping("/calc/{number1}/{number2}")
@ResponseBody
public Calculator calc(@PathVariable("number1") int number1,
@PathVariable("number2") int number2){
Calculator c = new Calculator(number1 , number2) ;
return c;
}
}