簡體   English   中英

如何將大量參數從Angular js傳遞到Rest服務

[英]How to pass large number of parameters from Angular js to rest service

我正在嘗試使用** @queryParam**從有角JS $http服務獲取參數到其余服務。 我需要獲取很多參數(下面以3為例進行說明,但是我需要使用其中的12-15個參數,我需要傳遞給Java端),因此使用@QueryParam獲取所有參數會使代碼看起來很漂亮不好。我正在使用GET

我該如何優化呢?

示例我在做什么-

Angular Js代碼-

$http({
    url: someUrl, 
    method: "GET",
    params: {filter1: $scope.filter1,
filter2:$scope.filter2,
filter3:$scope.filter3
 });

Java端-

@path("/getAllData")
@GET
@Produces({..}
public response getAllData(@QueryParam("filter1") final String filter1,
                           @QueryParam("filter2") final String filter2,
                           @QueryParam("filter3") final String filter3){
}

另外,想知道優化情況,以防我構建URL而不是params對象,並使用@PathParam

$http.get('rest/test/getAllData/?filter1='$scope.filter1 + 
           '&filter2='$scope.filter2 + '&filter3='$scope.filter3 + 
           '&filter4='$scope.filter4)

我可以通過在@QueryParam中單獨傳遞來做到這一點。 當我們有大量參數時,我正在尋找優化的代碼。

使用所有必需的參數創建一個POJO。

在角度,這樣做

var obj = {};
obj.filter1 =  $scope.filter1;
obj.filter2 =  $scope.filter2;
obj.filter3 =  $scope.filter3;


$http({
    url: someUrl, 
    method: "GET",
    params: obj
});

您可以像這樣接受休息中的所有參數-

@path("/getAllData")
@GET
@Produces({..}
public response getAllData(MyPojo obj){
  //String filter1 = obj.filter1;
}

您可以通過2種方式來做到這一點:

1) org.json.simple.JSONObject

2)Bean或POJO類。

AngularJS控制器:

var URL = appURL+'/adm/addCollProcess.do';
var json = {"col_pro_id":$scope.col_pro_id, "col_code": $scope.col_code, "exam_type_ids": $scope.exam_types.toString().replace("[","").replace("]",""), 
    "created_by" : "admin", "file_path" : $scope.file_path, "website" : $scope.website, "facebook" : $scope.facebook};

// using JSONObject
$http.post(URL, json).then(function(response){
    if(response.data){
       // Code
    }
});

// using Bean Class
 $http.post(URL, JSON.stringify(json)).then(function(response){
    if(response.data){
       // Code
    }
});

Java控制器:

// using JSONObject
@RequestMapping(value="/addCollProcess.do", method=RequestMethod.POST)
public boolean addCollProcess(@RequestBody JSONObject json){
    // Code
}

// using Bean Class:
@RequestMapping(value="/addCollProcess.do", method=RequestMethod.POST)
public @ResponseBody boolean addCollProcess(@RequestBody AdmissionProcessBean processBean) {
    // Code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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