我想在客户端使用Restangular通过REST API修改一个对象。我做了以下事情:
Restangular.setBaseUrl('/api/v1');
return Restangular.one('lists', item.listId).one('items',item.order).get().then(function(elem) {
elem.text = item.text;
elem.put();
});
但是put方法获取的错误URL错过了最后一个成员(item.order)的ID。
预期网址为/lists/2/items/22
,但我得到/lists/2/items
且PUT失败。
我可能做错了什么?
答案 0 :(得分:3)
好的,让我试一下理论:)
我上面的评论有点蹩脚,因为我专注于代码的第一部分,而不是put()
。
第一部分是完美的,你告诉Restangular使用one()
方法构建URL,并且GET请求必须非常好。
然后,基于一个新的Restangular-aware对象,您尝试在API中保留更改。
但是,我认为Restangular实际上并不知道要将哪个字段用作id,以便为elem
对象构建正确的查询。
您是否尝试在Restangular Entity Provider中配置fields属性?
RestangularProvider.setRestangularFields({
id: "orderId",
});
我相信将正确的字段指定为 id 就足够了。
作为奖励,如果.save()
是新对象,{{1}}似乎会使用PUT或POST。
希望这有帮助