我正在尝试调用以下网络服务,
@RequestMapping(value = { "/persons" },method = RequestMethod.GET,headers="Accept=application/json")
public List<Person> getDummyData(@RequestParam(value="search", defaultValue="a") String search,HttpServletRequest req){
List<Person> listOfMatchedPersons=listOfPersons.stream().filter(person->person.getName().contains(search)).collect(Collectors.toList());
req.getParameterMap().forEach((k,v)->System.out.println(k+" : "+v));
return listOfMatchedPersons;
}
我想用我的UI中的一些参数调用此服务,但它始终使用搜索的默认值即a执行此方法。 以下是我使用此服务的angularjs 2服务,
search(term: string) {
var params = new URLSearchParams();
params.set('search', term);
let aopsServices = 'http://localhost:8080/dummy/persons';//?search='+term;
this.ot = this.http
.get(aopsServices,params)
.map(response => response.json())
;
return this.ot;
}
但是,如果我将网址更改为http://localhost:8080/dummy/persons'?search='+term;
则可行。
如果安全服务受到保护,那么访问其他服务的理想方法是什么呢?
答案 0 :(得分:1)
我将代码更改为
var params = new URLSearchParams();
params.set('search', term);
let aopsServices = 'http://localhost:8080/dummy/persons';
this.ot = this.http
.get(aopsServices,new RequestOptions({search:params}))
.map(response => response.json());
它有效。 我误读了get的文档。
答案 1 :(得分:1)
我认为有两种方法可以做到:
利用URLSearchParams
类:
search(term: string) {
var params = new URLSearchParams();
params.set('search', term);
let aopsServices = 'http://localhost:8080/dummy/persons';
this.ot = this.http
.get(aopsServices, { search: params })
.map(response => response.json());
return this.ot;
}
使用`(反引号)代替单引号'
search(term: string) {
let aopsServices = `http://localhost:8080/dummy/persons?search=${term}`;
this.ot = this.http
.get(aopsServices, { search: params })
.map(response => response.json());
return this.ot;
}
第二种方法更简洁,但不对参数进行urlencode。