如何在Angular中获取HttpClient.Post请求的响应标头

时间:2019-07-08 11:02:01

标签: angular angular-httpclient

我使用的是angular 7,我需要从服务文件中的给定API获取“响应标头”,而无需使用“订阅”。请帮助我

我尝试使用许多Google答案,但均无效果。我无法在service.ts文件中使用subscription,因为我在component.ts文件中遇到错误,因为我们不能两次使用subscribe

login(email: string, password: string ) {
this.email = email;
this.password = password;


return this.http.post<any>(`this.url/auth/login`, { email, password})
.pipe(map(user => {
var currentuser:any = { user: user.user, token: user.token};
if (currentuser && user.token) {
localStorage.setItem('currentUser', JSON.stringify(currentuser));
this.currentUserSubject.next(currentuser);
 }
return user;
 }));

}

预期结果:

需要获取上述api的响应标题。 注意:“响应标头”是指-内容长度,令牌,Content-Type,Etag等

实际结果:

我只得到正文,而不是标题

1 个答案:

答案 0 :(得分:0)

我的理解是你想要

  • 发送post请求并检索数据
  • 但也可以访问服务器响应的标头。

如果是这样,则应考虑使用HttpClient.post()来调用httpOptions = { observe: 'response' }。 这样,HttpClient.post()将返回类型为Observable的{​​{1}},而不仅仅是JSON数据。

推荐阅读Angular Official docs

您的代码应类似于:

HttpResponse

已更新

或在this.http.post<HttpResponse<User>>(`${this.url}/auth/login`, { email, password }, { observe: 'response' }).subscribe(response => { ... response.headers.keys(); // all header names ... response.body // response content ... }); 内,它将仅检索service method模型,但会对响应详细信息执行某些操作,例如:(可能有错别字)

User