Angular HttpClient.get标头

时间:2018-08-31 00:40:22

标签: angular get header httpclient

我有这个简单的代码即服务

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class SpotifyService {
  constructor(private http: HttpClient) {
  }

  getQuery(query: string) {
    const cabecera: HttpHeaders = new HttpHeaders({
      'Authorization': 'Bearer BQDWZC2Y_iSV3rfmAhv-QxDpmhhJbbmgCnspy7HpIZPX5CbJ74D4Xl4aOyXLUL4smF2gZ_V3wiSXLxdLFPY'
    });
    const url = 'https://api.spotify.com/v1/' + query;
    return this.http.get(url, { cabecera });
  }
  getNewReleases() {
    return this.getQuery('browse/new-releases').pipe(map( data => data['albums'].items));
  }
}

但是我遇到此错误,我不明白为什么。

  

类型'{cabecera:HttpHeaders; }'不可分配给   '{headers?类型的参数:HttpHeaders | {[header:string]:   字符串串[]; };观察?参数?:Ht ...'。宾语   文字只能指定已知属性,而'cabecera'不能指定   存在于类型'{标头中?:HttpHeaders | {[header:string]:字符串|   串[]; };观察?参数?:Ht ...'。

1 个答案:

答案 0 :(得分:0)

您的return this.http.get(url, { cabecera });行在语义上是不正确的,这意味着/解决了以下问题:

    return this.http.get(url, 
      { cabecera : new HttpHeaders({
        'Authorization': 'Bearer BQDWZC2Y_iSV3rfmAhv-QxDpmhhJbbmgCnspy7HpIZPX5CbJ74D4Xl4aOyXLUL4smF2gZ_V3wiSXLxdLFPY'
      }) 
    });

这是错误的,因为传递给HTTP客户端的options对象不希望使用称为cabecera的密钥,而是希望使用headers的密钥。

因此,只需将行替换为return this.http.get(url, { headers: cabecera });