我在练习角服务和web服务。我的目标是制作从web服务获取数据的角度服务。连接到服务器,服务器返回一些数据。问题是我收到错误:
Error: $resource:badcfg
Response does not match configured parameter
Error in resource configuration for action `featured`. Expected response to contain an object but got an array (Request: undefined products/featured)
我不知道我的错误在哪里,或者$resource实现错误,或者Spring控制器做得不好?也许有人可以提出任何建议,让它发挥作用的最佳方法是什么?
我的代码:
WebService控制器:
@RestController
@RequestMapping("/products")
public class ProductManagementController {
@Autowired
ProductManagementService productService;
@RequestMapping(value="/featured")
public ResponseEntity<List<ProductModel>> getFeaturedProducts() {
List<ProductModel> products = productService.getFeaturedProducts();
if (products.isEmpty()) {
return new ResponseEntity<List<ProductModel>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<ProductModel>>(products, HttpStatus.OK);
}
@RequestMapping(value="/recommended")
public ResponseEntity<List<ProductModel>> getRecommendedProducts(){
List<ProductModel> products = productService.getRecommendedProducts();
if(products.isEmpty()){
return new ResponseEntity<List<ProductModel>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<ProductModel>>(products,HttpStatus.OK);
}
}
角度服务:
(function() {
'use strict';
var mainApp = angular.module('mainApp');
mainApp.factory('ProductService', [ '$resource', function($resource) {
return $resource('products/:action/:sub', {}, {
'featured' : {
mothod : "GET",
params : {
action : 'featured',
sub : ''
}
}
});
} ]);
mainApp.controller('featuredItems', [ '$scope', 'ProductService',
function($scope, ProductService) {
ProductService.featured(function(responseData) {
debugger; //This breake point is not colled
});
} ]);
})();
您希望featured
操作类似于内置的query
操作,根据文档,该操作的定义为'query': {method:'GET', isArray:true}
。在接收对象数组时,您总是必须这样做。