我试图用params发送一个httpClient.get请求,并在我的Spring中使用它。我想发送搜索条件,并根据该条件返回对象列表。
这是我的search.service.ts
public getDentists(name, city, type, rating): Observable<Dentist[]>{
let params = new HttpParams();
params.set('name', name);
params.set('city', city);
params.set('type', type);
params.set('rating', rating);
return this.httpClient.get('dentists/', {params: params});
}
在我的controller.java里
@RequestMapping(value = "/dentists", method = RequestMethod.GET)
public List<Dentist> search(@RequestParam("name") String name,
@RequestParam("city") String city,
@RequestParam("type") String type,
@RequestParam("rating") String rating) {
return dentistRepository.findDentistByName(name);
}
这就是我所犯的错误:
我的问题是,我做错了什么,为什么我没有收到请求?
发布于 2017-12-02 23:16:40
HttpParams是不变的。所有的变异运算符都返回一个新实例,所以您必须这样做。
let params = new HttpParams()
.set('name', name)
.set('city', city)
.set('type', type)
.set('rating', rating);
或
let params = new HttpParams();
params = params.set('name', name);
params = params.set('city', city);
params = params.set('type', type);
params = params.set('rating', rating);
发布于 2017-12-02 23:17:09
将代码更改为:
let params = new HttpParams()
.set('name', name)
.set('city', city)
.set('type', type)
.set('rating', rating);
HttpParams是不变的。
发布于 2017-12-02 23:23:20
尝试使用append()
方法(而不是add()
):
public getDentists(name, city, type, rating): Observable<Dentist[]>{
let params = new HttpParams();
params = params.append('name', name);
params = params.append('city', city);
params = params.append('type', type);
params = params.append('rating', rating);
return this.httpClient.get('dentists/', {params: params});
}
更新
实际上,append()
和set()
方法将产生完全相同的结果:
?name=NAME_VALUE&city-CITY_VALUE&type=TYPE_VALUE&rating=RATING_VALUE,
当我们想将另一个值附加到现有键时,应该使用append()
,如下所示:
?name=NAME1&name=NAME2_VALUE&.....
我们还可以使用传递给HttpParamsOptions
构造函数的HttpParams
对象:
const params = new HttpParams({
fromObject: {
name,
city,
type,
rating
}
});
return this.httpClient.get('dentists/', {params});
https://stackoverflow.com/questions/47613568
复制相似问题