如何在角度传递体中发送休息PUT请求

时间:2017-11-04 14:32:45

标签: javascript angularjs

我需要向Web服务器发送休息请求,我正在使用此代码:

var getData = function(...) {
    return $http({
      method: "PUT",
      url: getStatistics,
      headers: {
        'loginId': ...,
        'token': ...,
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      data: {"...":"...","...":"...","...":"...","...":"...",
             "...":"....","....":"...",
             "datefrom":"2017-01-01","dateto":"2017-10-20"}
    }).then(function(result){
        var dataString = JSON.stringify(result.data);
        alert(result.data);
        return result.data;
    });
};

问题是我收到错误400错误请求,我该怎么办?

请求适用于Postman使用此结构

https://i.stack.imgur.com/BBrwF.jpg

https://i.stack.imgur.com/NbQuO.jpg

这应该是我如何传递数据对象的问题?

这就是我实现$ httpParamSerializerJQLike的方法,它正确吗?

app.factory('statistics', function($http,$httpParamSerializerJQLike) {
var getData = function(loginId,token,id,dataInizio,dataFine,periodo,selezione) {
    // Angular $http() and then() both return promises themselves

    var data = '{"datefrom":"2017-01-01","dateto":"2017-10-20"}';

    alert(data);
    return $http({
      method: "PUT",
      url: getStatistics,
      headers: {
        'loginId': loginId,
        'token': token,
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      data: { 'data': $httpParamSerializerJQLike(data)}
    }).then(function(result){
        var dataString = JSON.stringify(result.data);
        alert(result.data);
        return result.data;
    });
};

return { getData: getData };
});

1 个答案:

答案 0 :(得分:0)

您正在发送x-www-form-urlencoded正文,但它包含一个名为data的参数,其中包含JSON。

你需要

data: $httpParamSerializerJQLike({data: angular.toJson(data)})