我的回复正文如下所示:
{
"code": 200,
"message": Items succesfully retrieved,
"items": [
{
...
}
]
}
我以前使用$ http,所以没有这个问题,但是我决定切换到ngResource,因为它看起来更好。而且我确定我做错了,因此,如果您能告诉我如何将“项目”(在此示例中)定位为返回的对象(与放置,放置,...相同)
这是我尝试ngResource的代码示例
app.factory("Product", function($resource,APILINK) {
return $resource(APILINK+"/api/v1/products/:id", {id: '@id'}, {
query: {method: 'GET',
isArray: false
},
update: { method: 'PUT' }
});
});
我真的不知道这是否是构建发送代码和消息的REST Api的好方法。但这感觉很干净:'(
我需要修改REST Api发送的json吗?还是有办法让ngResource在响应正文中忽略“代码”和“消息”?
最佳答案
在您的数据传输(json)对象中设置状态代码和消息可能不是解决之道。是否需要访问状态码?
The documentation on $resource的内容如下:
HTTP GET“类”操作:Resource.action([parameters],[success],
[错误])
非GET“类”操作:Resource.action([parameters,
postData,[成功],[错误])
非GET实例动作:
instance。$ action([参数],[成功],[错误])
因此,每个$ resource调用都会为我们提供成功和错误的回调。
例如:
var Product = $resource('/api/as/product');
Product.query(function(items) {
// success handler
}, function(error) {
// error handler
});
您可能无法读取状态代码,但是您知道呼叫是否成功。
另外,如果必须获取状态码,则可以调查拦截器:
// Resource
var Product = $resource(url, {}, {
get: {
method: 'GET'
interceptor: {
response: function(response) {
var result = response.resource;
result.$status = response.status;
return result;
}
}
}
});
// Caller
Product.get(params, function(result) {
console.log('status code: ' + result.$status);
});
使用此资源进行调用时,我们将截取结果,将响应中的状态代码添加到该结果中,然后将其返回给调用方。