Restangular: getList with object containing embedded array

匿名 (未验证) 提交于 2019-12-03 01:13:01

问题:

In my AngularJS project I'm trying to use the Restangular getList method but it's returning an error because the API response is not directly an array but an object containing an array.

{   "body": [     // array elements here   ],   "paging": null,   "error": null } 

The Restangular error message is:

Error: Response for getList SHOULD be an array and not an object or something else 

Is it possible to tell Restangular that the array it's looking for is inside the body property?

回答1:

Yes, see the Restangular documentation. You can configure Restangular like so:

rc.setResponseExtractor(function(response, operation) {     if (operation === 'getList') {         var newResponse = response.body;         newResponse.paging = response.paging;         newResponse.error = response.error;         return newResponse;     }     return response; }); 

Edit: It seems Restangular's API is now changed, for the better, and that the current method to use is addResponseInterceptor. Some adjustments might be needed to the function passed.



回答2:

I think you should use a the customGET from the Custom Methods

Restangular.all("url").customGET(""); // GET /url and handle the response as an Object



回答3:

as Collin Allen suggested you can use addResponseInterceptor like this:

    app.config(function(RestangularProvider) {          // add a response intereceptor         RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {           var extractedData;           // .. to look for getList operations           if (operation === "getList") {             // .. and handle the data and meta data             extractedData = data.body;             extractedData.error = data.error;             extractedData.paging = data.paging;           } else {             extractedData = data.data;           }           return extractedData;         });  }); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!