我正在尝试使用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。
抱歉没有提出详细的问题。
答案 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));