我一直在研究一个webapp,它正在使用localhost。但是,在部署到实际站点后,任何DELETE请求都会收到400(错误请求)错误,响应“DELETE”请求可能不包含实体。查看请求,包含的有效负载是我正在尝试删除的对象的ID。我搜索并从Restangular开发人员Here找到了我的问题的解决方案:
RestangularProvider.setRequestInterceptor(function(elem, operation) {
if (operation === "remove") {
return undefined;
}
return elem;
})
然而,这对我不起作用。我也尝试返回null而不是undefined,但请求仍然包含ID作为正文。我在if语句中放了一个console.log消息,它在删除请求响应之前显示,因此我可以告诉它正确捕获删除请求。这是我正在进行删除调用的示例:
$scope.delete = function() {
Restangular.one('graph', $scope.model.id).remove().then(function() {
$location.path('/');
});
};
我无法弄清楚是什么导致正文被包含在请求中,以及为什么RequestInterceptor没有解决问题。任何帮助或指示是什么导致这将是伟大的。
你有什么看起来应该工作。您可以尝试使用addRequestInterceptor或addFullRequestInterceptor,而不是setRequestInterceptor。不推荐使用setRequestInterceptor,但它应该仍然有效。尝试切换它,让我知道这是否成功。
addRequestInterceptor对我有用。
RestangularProvider.addRequestInterceptor(function(elem, operation, what, url) {
if (operation === "remove") {
return null;
}
return elem;
});