Javascript 我应该如何将ngResource与特定的响应主体一起使用?
我的反应体如下所示:Javascript 我应该如何将ngResource与特定的响应主体一起使用?,javascript,angularjs,node.js,rest,ngresource,Javascript,Angularjs,Node.js,Rest,Ngresource,我的反应体如下所示: { "code": 200, "message": Items succesfully retrieved, "items": [ { ... } ] } 我以前使用过$http,所以我没有这个问题,但我决定切换到ngResource,因为它看起来更好。我肯定我做错了,所以如果你能告诉我如何将“items”(在本例中)作为返回对象(put
{
"code": 200,
"message": Items succesfully retrieved,
"items": [
{
...
}
]
}
我以前使用过$http,所以我没有这个问题,但我决定切换到ngResource,因为它看起来更好。我肯定我做错了,所以如果你能告诉我如何将“items”(在本例中)作为返回对象(put、post等也一样)
下面是我为试用ngResource而编写的代码示例
app.factory("Product", function($resource,APILINK) {
return $resource(APILINK+"/api/v1/products/:id", {id: '@id'}, {
query: {method: 'GET',
isArray: false
},
update: { method: 'PUT' }
});
});
我真的不知道这是否是构建RESTAPI发送代码和消息的好方法。但这样感觉更干净:“(
我是否需要修改REST Api发送的json?或者是否有办法使ngResource忽略响应正文中的“代码”和“消息”当您引用
get
和put
以及其他REST动词时,您可以指定项
对象
获取示例:
var itemList = Product.query({ id: 12345 }).items;
var MyItemList = {
"code": 200,
"message": "Items succesfully retrieved",
"items": [ { ... }, { ... }, { ... } ]
}
Product.update({ id: 12345 }, MyItemList.items);
放置示例:
var itemList = Product.query({ id: 12345 }).items;
var MyItemList = {
"code": 200,
"message": "Items succesfully retrieved",
"items": [ { ... }, { ... }, { ... } ]
}
Product.update({ id: 12345 }, MyItemList.items);
虽然如果您只是发送第一个示例中的
itemList
,但您已经将其缩小到仅发送items[]
数组不包含code
和消息
当您引用get
和put
以及其他REST谓词时,可以指定项
对象
获取示例:
var itemList = Product.query({ id: 12345 }).items;
var MyItemList = {
"code": 200,
"message": "Items succesfully retrieved",
"items": [ { ... }, { ... }, { ... } ]
}
Product.update({ id: 12345 }, MyItemList.items);
放置示例:
var itemList = Product.query({ id: 12345 }).items;
var MyItemList = {
"code": 200,
"message": "Items succesfully retrieved",
"items": [ { ... }, { ... }, { ... } ]
}
Product.update({ id: 12345 }, MyItemList.items);
虽然您只是发送第一个示例中的
itemList
,但您已经将其缩小到了items[]
数组,其中不包括code
和message
设置数据传输(json)中的状态代码和消息对象可能不是方法。是否需要访问状态代码
全文如下:
- HTTP获取“类”操作:Resource.action([参数],[成功], [错误])
- 非获取“类”操作:Resource.action([参数], postData,[成功],[错误])
- 非获取实例操作: 实例.$action([参数],[成功],[错误])
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);
});
当使用此资源进行调用时,我们将截取结果,从响应中将状态代码添加到结果中,然后将其返回给调用方。在数据传输(json)对象中设置状态代码和消息可能不是解决方法。是否需要访问状态代码 全文如下:
- HTTP获取“类”操作:Resource.action([参数],[成功], [错误])
- 非获取“类”操作:Resource.action([参数], postData,[成功],[错误])
- 非获取实例操作: 实例.$action([参数],[成功],[错误])
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);
});
当使用此资源进行调用时,我们将截取结果,从响应中将状态代码添加到结果中,然后将其返回给调用方。包含代码、消息和项目数组的“响应正文”本身是对象吗?如果是,您可以发布/放置该对象,并以这种方式检索项目数组。是您的“响应正文”吗,包含代码、消息和项目数组对象本身?如果是,您可以发布/放置该对象,并以这种方式检索项目数组。谢谢!正是我想要的:拦截器!谢谢!正是我想要的:拦截器!