Угловые заголовки HttpClient.get - PullRequest
0 голосов
/ 31 августа 2018

у меня есть этот простой код в качестве услуги

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; } 'не присваивается параметр типа '{заголовки ?: HttpHeaders | {[header: string]: строка | Строка []; }; наблюдать ?: "тело"; params ?: Ht ... '. объект литерал может указывать только известные свойства, а 'cabecera' не существует в типе '{заголовки ?: HttpHeaders | {[header: string]: строка | Строка []; }; наблюдать ?: "тело"; params ?: Ht ... '.

1 Ответ

0 голосов
/ 31 августа 2018

Ваша строка return this.http.get(url, { cabecera }); семантически неверна, это означает / разрешает следующее:

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

Что неверно, поскольку объект параметров, передаваемый клиенту HTTP, не ожидает ключ с именем cabecera, а вместо него ключ headers.

Так что это можно решить, просто заменив строку следующим образом: return this.http.get(url, { headers: cabecera });

...