2014-11-05 55 views
0

我是AngularJS的新手,并试着用它。

我想将数据发送到服务器并将其映射到DTO中的一个REST服务。 所以我做到了这样,

  saveUserUrl = "http://localhost:8080/App/rest/UserManager/saveUser"; 

     var results = []; 
     for (var i = $scope.users.length; i--;) { 
      var user = $scope.users[i]; 
      results.push(user); 
     } 
     $http.post(saveUserUrl, { 
       data: results, 
       headers: {'Content-Type': undefined,'Authorization':$routeParams.auth }, 
       transformRequest: function(data, headersGetterFunction) { 
        return data; 
       } 
      }). 
      success(function(data, status, headers, config) { 
       if(status == 203) { 
        alert("Session Timed out, Please Login Again"); 
        $window.location=getContextFromURL(); 
       }else{ 
        alert("user saved success"); 
       } 
      }). 
      error(function(data, status, headers, config) { 
       alert("user saved failure"); 
      }); 

有效载荷会为

{"data": 
    [{"id":2,"name":"Agent3","extn":3,"group":1,"groupName":"Agent","isNew":false}, 
    {"id":1,"name":"Agent2","extn":"2","group":1,"groupName":"Agent","isNew":false} 
    ], 
"headers": 
    {"Authorization":"5825ccb2-d28b-47e6-87a8-0b31f8ec9a78"} 
} 

REST服务

@POST 
@Path("/saveUser") 
@Produces({ MediaType.APPLICATION_JSON}) 
@Consumes({ MediaType.APPLICATION_JSON}) 
public Response saveUser(@HeaderParam(HttpHeaders.AUTHORIZATION) String authorization,@Context HttpServletRequest req, DBUserEntity dbUser ) { 
    System.out.println("User iiss :" + dbUser); 
    ResponseBuilder responseBuilder = Response.status(200); 
    //System.out.println("zipStatus :"+zipStatus); 
    //TODO 
    return responseBuilder.entity(null).build(); 
} 

一切工作正常。

现在我试着用这种方式为所有服务器调用广义函数和它停止工作

$http({ 
      url: urlBase+requestMapping, 
      method: method, 
      data: formData, 
      headers: { 
       'Content-Type': contentType, 
       'Authorization':$routeParams.auth 
      }, 
      transformRequest: function(data, headersGetterFunction) { 
       return data; // do nothing! FormData is very good! 
      } 
     }); 

它停止工作。 有效载荷外出时为:

[object Object],[object Object] 

我试图JSON.stringify,然后将其作为

[ 
    { 
     "id": 2, 
     "name": "Agent23", 
     "extn": 23, 
     "group": 1, 
     "groupName": "Agent", 
     "isNew": false, 
     "$$hashKey": "object:11" 
    }, 
    { 
     "id": 1, 
     "name": "Agent22", 
     "extn": "22", 
     "group": 1, 
     "groupName": "Agent", 
     "isNew": false, 
     "$$hashKey": "object:10" 
    } 
] 

过去,我不知道的$ HTTP正确的工作VS $ http.post,有没有什么具体的事情,每种发送数据的方式都需要小心。

+0

你有没有发现这样做的原因是什么? – 2017-12-08 16:24:23

回答

0

$http.post只是$httpmethod:'POST'的快捷方式。 在你的榜样,运行

$http({ 
     url: saveUserUrl, 
     method: 'POST', 
     data: results, 
     headers: {'Content-Type': undefined,'Authorization':$routeParams.auth }, 
     transformRequest: function(data, headersGetterFunction) { 
      return data; 
     } 
    }); 

应该正好产生相同的结果作为您的原始$http.post要求

+0

它不是发送相同的Payload或者我做错了什么,我也发布了有效负载,它不发送。 – Jayesh 2014-11-05 15:01:30

+0

确定网址正确吗?你有没有从服务器得到任何回应? – yarons 2014-11-05 15:17:44

+0

同一个URL用于两种情况,第一种情况下它正在工作,第二种情况下它不是有效负载不同,并且它不能映射到适当的REST服务方法。 – Jayesh 2014-11-05 15:31:04