2

当我点击 api 时:

我如何使用以下方法访问 api(不是来自 angular 应用程序):

apiaddress/endpoint/idnumber/?param=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,但这个问题一直困扰着我。谢谢!

4

3 回答 3

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
                           } 
                          );
于 2013-10-23T10:22:12.773 回答
5

您的问题是内容类型,而不是请求中没有正文。(至少我从你的问题中读到了这一点。)

尝试定义一个默认的内容类型标题,Restangular 也应该使用它:

RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
于 2013-10-23T09:50:57.823 回答
1

如果你想使用 customDelete 添加请求有效负载,你应该使用这个:

Restangular.all('path').customDELETE('', {}, {}, payloadObject);

*这不会将有效负载参数添加到URL,此方法将有效负载对象添加到正文。

于 2017-12-21T00:55:34.267 回答