2017-09-25 6 views
0

Ich möchte Header für alle Anfrage festlegen. will nicht noch einmal für jeden Request-Header setzen und wieder, wie ich soAngular Rest Api Header Anruf Problem

public update(student: Student): Promise<Student> 
{ 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 
    headers.append('authentication', `${student.token}`); 

    const url = `${this.studentsUrl}`; 

    return this.http 
     .put(url, JSON.stringify(student), { headers: headers }) 
     .toPromise() 
     .then(() => student) 
     .catch(this.handleError); 
} 

wie dieser Code habe, ist es eine Möglichkeit, aus dem ich generischen Header für jede Anforderung einstellen kann?

+0

haben Sie versucht, HTTP-Interzeptoren zu suchen? welche Winkelversion Sie verwenden – Rahul

+0

@Rahul winkel 4 –

+0

angular 4.3.0 ab HTTP-Interzeptoren werden unterstützt. Also, wenn Sie angular 4.3.0+ verwenden, dann ist Interceptor die beste Option. Siehe meine Antwort unter – Rahul

Antwort

0

UPDATE:

Um generische Header unter Winkel 4.3 fügen Sie benötigen individuellen Service zu entwickeln. Bitte beachten Sie this Antwort, die bestmögliche Lösung vor Winkel 4.3 erklärt.

Hallo können Sie HTTP Interceptor versuchen:

Hinweis: HTTP Abfangjäger von Angular 4.3+ unterstützt werden

Dies ist Interceptor Datei

import { Injectable, NgModule} from ‘@angular/core’; 
import { Observable } from ‘rxjs/Observable’; 
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from ‘@angular/common/http’; 
import { HTTP_INTERCEPTORS } from ‘@angular/common/http’; 
@Injectable() 
export class MyInterceptor implements HttpInterceptor { 
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
     const dupReq = req.clone({ headers: req.headers.set(‘Consumer-Secret’, ‘some sample key’) }); 
     return next.handle(dupReq); 
    } 
}; 

und in App. module.ts:

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 

import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; 
import { MyInterceptor } from './interceptors/my.interceptor'; 


@NgModule({ 
    declarations: [AppComponent], 
    imports: [BrowserModule, HttpClientModule], 
    providers: [ 
    { provide: HTTP_INTERCEPTORS, useClass: MyInterceptor, multi: true } 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 

Bitte beziehen Sie sich auf this Website als Referenz

+0

Können Sie Ihren Code in meinem Beispiel zuordnen, den ich erwähnt habe? –

+0

, wenn Sie diese Interceptor-Datei in Ihrem Projekt hinzufügen; Interceptor wird immer jede HTTP-Anfrage abfangen und verarbeiten, was auch immer Sie in Interceptor schreiben – Rahul

+0

Hope this loaded ur issue – Rahul