我无法在get请求的结果中显示标题。
import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class ApisService {
link = 'http://13.233.34.68:3000/api/';
xToken = 'nil';
constructor(private http: HttpClient) { }
getToken() {
if (this.xToken === 'nil') {
const header1 = new HttpHeaders({'username': 'angular', 'password': '123456'});
this.http.get(this.link + 'get-token', {headers: header1})
.subscribe(
(result) => {
console.log(result['headers']);
}
);
}
}
}
我在控制台中得到的结果是“未定义”。 请帮忙。
编辑: 使用
时 this.http.get(this.link + 'get-token', {observe: 'response', headers: header1})
.subscribe(
(result) => {
console.log('header keys:', result.headers.keys());
console.log('header X-ABC:', result.headers.get('X-ABC'));
console.log(result.body);
}
我在控制台中得到输出
header keys:
Array(4) [ "cache-control", "content-type", "expires", "pragma" ]
apis.service.ts:18:12
header X-ABC: null apis.service.ts:19:12
Object { success: true }
答案 0 :(得分:1)
在选项中,添加observe: 'response'
,然后您的返回类型将为Observable<HttpResponse<T>>
。最近角度,默认情况下返回Observable<T>
(即observe?: 'body'
)。
拥有HttpResponse<T>
后,您便可以访问响应对象。
this.http.get(this.link + 'get-token', {observe: 'response', headers: header1})
.subscribe(
(result) => {
console.log('header keys:', result.headers.keys());
console.log('header X-ABC:', result.headers.get('X-ABC'));
console.log(result.body);
}
);
Angular会自动尝试检测物体的类型。也可以使用responseType
选项控制。
response
和body
的替代项是observe: 'events'
,它将返回Observable<HttpEvent<T>>
。然后,您将从HttpClient
中获得可用的事件。事件是:
type HttpEvent<T> = HttpSentEvent | HttpHeaderResponse | HttpResponse<T> | HttpProgressEvent | HttpUserEvent<T>