Javascript 理解AngularJS';新加坡元资源
我不太明白如何正确使用AngularJS的$resource。例如,我有一个REST API,它返回如下数据:Javascript 理解AngularJS';新加坡元资源,javascript,angularjs,ngresource,Javascript,Angularjs,Ngresource,我不太明白如何正确使用AngularJS的$resource。例如,我有一个REST API,它返回如下数据: { "status": "success", "data": { "expand": "schema,names", "startAt": 0, "maxResults": 10, "total": 38, "issues": [{ ... }, { ... }, {...}, ...]
{
"status": "success",
"data": {
"expand": "schema,names",
"startAt": 0,
"maxResults": 10,
"total": 38,
"issues": [{ ... }, { ... }, {...}, ...]
}
}
现在我想弄清楚的是如何在AngularJS中使用$resource,其中data.issues中的每个对象都作为资源返回(因此,在本例中,获取一个包含10个资源的数组/集合),但是我似乎无法使用AngularJS中的$resource从有限的资源中找到它,或者我可以吗?$resource需要一个经典的“RESTful”API源。这意味着您将有一个端点,其中GET、PUT、POST和DELETE方法都将影响给定的资源类型,这些消息的主体将只包括资源,而不包括资源和一组元数据 对于您正在尝试做的事情,如果这是您一直使用的API,您可能需要使用$http来实现自己的API,因为它所响应的JSON似乎包含$resource不关心的一组元数据 唯一的另一种选择是编写某种httpInterceptor,将您从web服务获得的信息转换为$resource可以更无缝地处理的内容 虽然从语义上讲,您的web服务可能是一般意义上的“RESTful”,但在当前的经典标准中它并不是RESTful 有关REST的更多信息
编辑:在上述信息之外,如果看不到web API的签名或不知道您要做什么,就很难更详细地回答您的问题。查看代码,blesh是正确的,所以我所做的是修改基本$resource代码,以支持自定义编码器/解码器,使$resource能够与任何可能具有自定义格式的RESTAPI一起工作。向angularjs发出pull请求,他们将包含它,这样我就不必维护这个单独的fork:对于angular的较新版本,您可以提供对资源操作的回调,该操作将绕过外部包装
$resource('', {}, {
query: {
method: 'GET',
isArray: true,
transformResponse: function(response) {
return JSON.parse(response).data.issues;
}
}
});
然后在资源回调函数中
Issue.query({
//query params
}, function(issues) {
//issues will be an array of your issues that you can process
//or just add to the scope to be iterated over
});