如何在角度6的get请求中显示结果标题

时间:2018-12-17 04:38:27

标签: angular get

我无法在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 }

1 个答案:

答案 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选项控制。

responsebody的替代项是observe: 'events',它将返回Observable<HttpEvent<T>>。然后,您将从HttpClient中获得可用的事件。事件是:

type HttpEvent<T> = HttpSentEvent | HttpHeaderResponse | HttpResponse<T> | HttpProgressEvent | HttpUserEvent<T>

参考documentation

相关问题