将多个参数从角度传递到休息服务

时间:2017-05-03 04:35:34

标签: javascript angularjs rest

我正在尝试使用URL通过$ http.get()将数据传递给我的休息服务。我需要传递10-12个参数。

Angular script.js

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

范围变量有时会被定义为未定义。但我想这不会有问题。我检查了控制台,URL正在与所有12-13参数正确形成。

现在我正在尝试使用@QueryParam进行休息服务,如下所示 -

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

问题是@QueryParam正在为2个参数工作,但是当我增加参数数量时,它就失败了。根据浏览器控制台,我收到 404错误

我们可以传递的参数数量是否有限制?我需要传递12-13个参数。我怎么能实现这个目标?

更新 -

我能够解决我的问题。我在@QueryParam中使用了Date数据类型,因为它引发了404错误。将其更改为String并且它有效。不知道我们不能在QueryParam中使用Date。

抱歉没有提出详细的问题。

3 个答案:

答案 0 :(得分:0)

如果你想以适当的RESTful方式进行,那么你可以尝试这样做,我已经为它提供了几个变量,但你可以为任何变量做。

@RequestMapping(path = "/rest/test/getAllData/{filter1}/{filter2}", method = RequestMethod.GET)
public Data getAllData(@PathVariable String filter1, @PathVariable String filter2) {
  // code here
}

您也可以使用RequestParam实现它,下面是一个示例,确保您的参数匹配

@RequestMapping(path = "/rest/test/getAllData", method = RequestMethod.GET)
public Data getAllData(@RequestParam String filter1, @RequestParam String filter2) {
// code here

}

如果您仍有复杂的结构,请将其作为POST发送,并在请求正文中包含JSON数据

@RequestMapping(path = "/rest/test/getAllData", method = RequestMethod.POST, consumes = "application/json")
public Book getAllData(@RequestBody ObjectKey objectKey) {
// code here

}

答案 1 :(得分:0)

要传递更多数量的参数,可以使用Rest参数。它用于访问传递给函数的无限数量的参数。

语法:

  

function add (...numbers){}

答案 2 :(得分:0)

 const params = new HttpParams()
  .set('paramName1', value1)
  .set('paramNmae2', value2);
   return this.httpClient.get<IMyObject[]>(this.myUrl, {params} ).pipe(
        tap(data=>console.log('ALL:'+JSON.stringify(data))),
    catchError(this.handleError));