当我点击api:
如何使用以下命令来点击api(不是来自角应用程序)
apiadress /端点/ IDNumber中/?PARAM =参数
使用DELETE,一切正常并且符合预期。 但是当我从Restangular这样做时:
Restangular.one("endpoint").customDELETE(idnumber,params)
我从服务器得到这个回复:
“detail”:“请求中不支持的媒体类型'text / plain; charset = UTF-8'。”
看起来DELETE随身携带一个BODY到服务器,我找不到如何强制空身。
(我在其他问题中看到了这一点,所以我事先说,是的api在我的开发机器的不同端口,我有:
config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
])
我喜欢Restangular,但是这个问题一直困扰着我。谢谢!
答案 0 :(得分:9)
试一试。
var restMyService = Restangular.all("MyService");
restMyService.customDELETE("myPath",{pramOne: $scope.pramOne},
{'Content-Type': 'application/json'},
idnumber)
.then(function(res){
//To DO - Success
},
function errorCallback() {
//TODO Error Handle
}
);
答案 1 :(得分:5)
您的问题是内容类型,而不是请求中没有正文。 (至少我从你的问题中读到了这一点。)
尝试定义一个默认的内容类型标题,也应该由Restangular使用:
RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
答案 2 :(得分:1)
如果你想用customDelete添加请求有效负载,你应该使用它:
Restangular.all('path').customDELETE('', {}, {}, payloadObject);
*这不会将有效负载参数添加到URL,此方法将有效负载对象添加到正文。