Sud*_*hin 4 angular angular-httpclient
我正在使用 angular 7,我需要从服务文件中的给定 API 获取“响应头”,而不使用“订阅”。请帮助我
我尝试过使用许多谷歌答案,但没有一个有效。我无法在 service.ts 文件中使用订阅,因为我在 component.ts 文件中收到错误,因为我们无法使用订阅两次
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;
}));
Run Code Online (Sandbox Code Playgroud)
}
预期结果 :
需要为上面的api获取“”响应头.. 注意:“响应头”的意思是——内容长度、令牌、Content-Type、Etag等
实际结果 :
我只得到正文而不是标题
我的理解是你想:
post请求和检索数据如果这是真的,您应该考虑HttpClient.post()使用httpOptions = { observe: 'response' }. 有了这个,HttpClient.post()将返回一个Observable类型,HttpResponse而不仅仅是 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
...
});
Run Code Online (Sandbox Code Playgroud)
更新
或者在 a 中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;
})
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8384 次 |
| 最近记录: |