我使用的是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等
实际结果:
我只得到正文,而不是标题
答案 0 :(得分:0)
我的理解是你想要
post
请求并检索数据如果是这样,则应考虑使用HttpClient.post()
来调用httpOptions = { observe: 'response' }
。
这样,HttpClient.post()
将返回类型为Observable
的{{1}},而不仅仅是JSON数据。
您的代码应类似于:
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