[英]How to get response header content-length when observing events in HttpClient.post() request? - Angular Http Client
[英]How to get the response header of a HttpClient.Post request in Angular
我正在使用angular 7,并且需要从服务文件中的给定API获取“响应标头”,而无需使用“订阅”。 请帮助我
我已经尝试过使用许多Google答案,但是都没有用。我无法在service.ts文件中使用subscribe,因为我在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等
实际结果 :
我只得到这个的标题而不是标题
我的理解是您想要:
post
请求并检索数据 如果是这样,则应考虑使用httpOptions = { observe: 'response' }
调用HttpClient.post()
。 这样, HttpClient.post()
将返回一个类型为HttpResponse
的Observable
而不是仅返回JSON数据。
推荐阅读Angular官方文档
您的代码应如下所示:
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
,该service method
仅会检索User
模型,但会对响应详细信息执行某些操作,例如:(可能有错别字)
getUserFromLogin(email: string, password: string): Observable<User> {
return this.http.post<HttpResponse<User>>(`${this.url}/auth/login`,
{ email, password }, { observe: 'response' }).pipe(
map(response => {
...
response.headers.keys(); // all header names
...
response.body // response content
...
return response.body;
})
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.