[英]AngularJS $http vs $http.post
我是AngularJS的新手,正在嘗試這一工作。
我想將數據發送到服務器並將其映射到REST服務之一中的DTO。 所以我是這樣做的
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的正確工作,在每種發送數據的方式中是否有任何需要特別注意的事情。
$http.post
只是$http
的快捷方式,方法為method:'POST'
。 在您的示例中,運行
$http({
url: saveUserUrl,
method: 'POST',
data: results,
headers: {'Content-Type': undefined,'Authorization':$routeParams.auth },
transformRequest: function(data, headersGetterFunction) {
return data;
}
});
應產生與原始$http.post
請求完全相同的結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.