J'essaie de faire une requête http get () en passant des valeurs dans les en-têtes , maintenant je remplace les en-têtes comme ceci:
public async AllCustomers(): Promise<ICustomer[]> {
const apiUrl = `${this.baseUrl}/courses`;
const headers = new HttpHeaders();
headers.append('Authorization', this.authKey);
headers.append('x-Flatten', 'true');
headers.append('Content-Type', 'application/json');
return this.http.get<ICustomer[]>(apiUrl).toPromise();
}
Quand je remplace les en-têtes comme ceci:
headers: new HttpHeaders ({Authorization: this.authKey})
Les valeurs par défaut des en-têtes (i, e Content-Type: application / json) seront remplacées par les en-têtes ci-dessus.
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import {ICustomer} from 'src/app/models/app-models';
@Injectable({
providedIn: 'root'
})
export class MyService {
private baseUrl = '....api url....';
public authKey = '....auth_key......';
constructor(private http: HttpClient) { }
public async AllCustomers(): Promise<ICustomer[]> {
const apiUrl = `${this.baseUrl}/customers`;
return this.http.get<ICustomer[]>(apiUrl ,
{headers: new HttpHeaders({Authorization: this.authKey})}).toPromise();<=====
}
}
Quel est le problème avec mon approche, je suis nouveau dans angulaire , une aide?
3 Réponses :
Vous devriez ajouter un en-tête à votre demande d'obtention comme ceci. De plus, étant donné que HttpHeaders est un objet immuable, vous devez réaffecter l'objet d'en-tête
public async AllCustomers(): Promise<ICourses[]> {
const apiUrl = `${this.baseUrl}/courses`;
let headers = new HttpHeaders();
headers = headers.append('Authorization', this.authKey);
headers = headers.append('x-Flatten', 'true');
headers = headers.append('Content-Type', 'application/json');
return this.http.get<ICourses[]>(apiUrl, {headers}).toPromise();
}
J'ai ajouté header pour recevoir la demande comme vous l'avez dit. Vous avez cette erreur ERROR Erreur: Uncaught (promis): HttpErrorResponse: {"headers": {"normalizedNames": {}, "lazyUpdate": null, "headers" : {}}, "status": 401, "s tatusText": "Non autorisé", "url"
Alors votre clé d'authentification est fausse. Vérifiez à nouveau votre clé d'authentification
Je pense que vous avez oublié d'ajouter l'objet headers dans la requête
De
return this.http.get<ICourses[]>(apiUrl, { headers }).toPromise();
À
return this.http.get<ICourses[]>(apiUrl).toPromise();
import { HttpHeaders } from '@angular/common/http';
import { HttpClient } from '@angular/common/http';
constructor(private _http: HttpClient) {
}
public getHeaders(): HttpHeaders {
const headers = new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': `Bearer ${this._auth.token}`
});
return headers;
}
public getData() {
const url = `https://stackoverflow.com/api/test`;
const body = { };
const options = { headers: this.getHeaders() };
return this._http.post<any>(url, body, options);
}
Si vous souhaitez envoyer un jeton d'authentification, pourquoi n'utilisez-vous pas un intercepteur http?