假设我有一个包含多个字段的资源,其中一些是只读的。或者它们可能属于我想在服务器上以不同方式处理的不同用例。
例如,我的bing
资源如下所示:
{id: 1,
foo: "A",
bar: "B",
createdAt: "2013-05-05"}
我想让Restangular到PUT只有一些字段,执行像:
这样的请求PUT /bing/1 {foo: "A"}
PUT /bing/1 {bar: "B"}
PUT /bing/1 {foo: "A", bar: "B"}
我不想要做的是:
PUT /bing/1 {id: 1, foo: "A", bar: "B", createdAt: "2013-05-05"}
我怎样才能实现它?
答案 0 :(得分:22)
我是Restangular的创造者。
@Nicholas绝对正确:)。那是PATCH而不是PUT。而Restangular确实支持它:)。
如果elem已经是elem.patch({foo: 2})
对象,那么 restangularized
将成为可能。
希望这会有所帮助!!
答案 1 :(得分:6)
这是PATCH
而不是PUT
。
答案 2 :(得分:2)
执行此操作的一种方法是将整个对象传递给patch方法,包括您不希望发送到后端的所有字段,然后在请求之前使用请求拦截器删除任何不需要的字段发送。
例如,要始终从任何补丁请求中删除字段createdAt
,您可以执行类似
app.config(function(RestangularProvider) {
RestangularProvider.setRequestInterceptor(function(element, operation, route, url) {
if (operation === 'patch') {
delete element.createdAt;
return element;
}
});
});
要详细了解请求拦截器,请参阅setRequestInterceptor
上的文档