通过 angularjs 2 向 restful 服务传递参数
Pass parameters through angularjs 2 to restful services
我正在尝试调用如下网络服务,
@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;
}
但是,如果我将 url 更改为 http://localhost:8080/dummy/persons'?search='+term;
,它会起作用。
如果安全,访问 restful 服务的理想方法应该是什么?
我将代码更改为
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的文档。
我看到有两种方法可以做到这一点:
利用 URLSearchParams
class:
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。
我正在尝试调用如下网络服务,
@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;
}
但是,如果我将 url 更改为 http://localhost:8080/dummy/persons'?search='+term;
,它会起作用。
如果安全,访问 restful 服务的理想方法应该是什么?
我将代码更改为
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的文档。
我看到有两种方法可以做到这一点:
利用
URLSearchParams
class: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。