Angular 5 HttpClient路径变量

Jos*_*rán 4 rest angular angular5

我正在为REST API开发Angular Client。

我的api公开如下网址:

https://server.com/users/detail/3
Run Code Online (Sandbox Code Playgroud)

其中3是参数。

我尝试使用Angular Client生成路径变量,但无法执行。我尝试

getUser(username: string) {
const options = {
  params: new HttpParams().set('username', username)
};

return this.http.get<User>('detail/{username}', options); }
Run Code Online (Sandbox Code Playgroud)

但是结果不正确。有人能帮我吗?

编辑

在尝试解决方案后,它仍然无法正常工作。如果

 getUser(username: string) {
const options = {
  params: new HttpParams().set('username', username)
};

const resource = 'detail/' + username;
return this.http.get<any>(resource);  }
Run Code Online (Sandbox Code Playgroud)

这个解决方案似乎我太可怜了,Angular HttpClient有这个解决方案吗?

amb*_*ssh 8

由于使用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)
     })
}
Run Code Online (Sandbox Code Playgroud)

如果要设置HttpParams,则应使用this.http.post-当然,如果服务器支持post而不是get。