簡體   English   中英

AngularJS $ http與$ http.post

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM