Angular 和 rest Web 服务原因:"Expected response to contain an object but got an array"



我在练习角服务和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}。在接收对象数组时,您总是必须这样做。

相关内容

最新更新