Я занимаюсь угловыми и веб-сервисами. Моя цель - сделать угловое обслуживание, которое получает данные из веб-сервиса. Соединение с сервером выполняется, и сервер возвращает некоторые данные. Проблема в том, что я получаю ошибку:
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}
в соответствии с документацией. Вы всегда должны делать это при получении массивов объектов.
isArray
. Кроме того , этоmethod
, неmothod
.isArray
сделалisArray
дело? Я не поймал немного в документации. Этот параметр нужен всегда, когда я получаю список с сервера?