我正在为REST API开发Angular Client。
我的api公开了以下网址:
https://server.com/users/detail/3
其中3是参数。
我尝试使用Angular Client生成路径变量,但我还没有。我试试
getUser(username: string) {
const options = {
params: new HttpParams().set('username', username)
};
return this.http.get<User>('detail/{username}', options); }
但结果并不正确。 有人能帮助我吗?
修改的
在我尝试解决方案之后,它仍然无法运行。如果
getUser(username: string) {
const options = {
params: new HttpParams().set('username', username)
};
const resource = 'detail/' + username;
return this.http.get<any>(resource); }
这个解决方案似乎我太穷了,Angular HttpClient有没有解决这个问题?
答案 0 :(得分:6)
因为使用http.get,您的参数应该插入到URL中:
getUser(username: string): void {
let url = `https://server.com/users/detail/${username}`;
this.http.get< User >(url)
//if api returns any data
.subscribe((returnObject: User) => {
//returned data
//remember that this segment will be returned asynchronously
//for example: callback(returnObject);
}, (error: HttpErrorResponse) => {
//if error
//for example: errorCallback(error)
})
}
如果你想设置HttpParams你应该使用this.http.post - 当然如果服务器支持post而不是get。
答案 1 :(得分:0)
您的第二次尝试已接近,但您需要使用美元符号和反引号而不是单引号才能使字符串插值起作用:
return this.http.get<User>(`detail/${username}`, options); }