2017-06-05 52 views
0

我正在嘗試從角度獲取參數JS $http服務使用** @queryParam**來休息服務。我需要獲取很多參數(下面以3作爲示例顯示,但我需要使用大約12-15個參數,我需要將它們傳遞給java端),所以使用@QueryParam獲取所有參數會使代碼看起來很漂亮不好。我正在使用GET如何從Angular js傳遞大量參數到休息服務

我該如何優化?

例子我在做什麼 -

角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){ 
} 

另外,想知道當我建立的網址,而不是萬一優化的params對象,並且採用相同的@PathParam

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

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

+0

可能重複[如何通過Java對象在寧靜的web服務的參數](https://stackoverflow.com /問題/ 17038000 /如何對傳遞Java的對象作爲一種參數中的RESTful Web網頁) –

回答

0

使用所有必需的參數創建一個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; 
} 
0

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

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 
    } 
}); 

爪哇控制器:

// 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 
} 
相關問題