2016-01-23 22 views

risposta

13

vedo due modi per farlo:

  • Opzione # 1: utilizzare la classe BaseRequestOptions

È possibile estendere questa classe e impostare l'intestazione da utilizzare per ogni richiesta:

@Injectable() 
export class DefaultRequestOptions extends BaseRequestOptions{ 
    headers:Headers = new Headers({ 
     'Content-Type': 'application/x-www-form-urlencoded' 
    }); 
} 

e la registra come descritto di seguito:

bootstrap(AppComponent,[ 
    HTTP_PROVIDERS, 
    provide(RequestOptions, { useClass: DefaultRequestOptions }) 
}); 
  • Opzione # 2: estendere la classe Http

Si potrebbe anche estendere la classe Http e impostare il intestazioni che vuoi inserire, come descritto di seguito:

@Injectable() 
export class CustomHttp extends Http { 
    constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) { 
    super(backend, defaultOptions); 
    } 

    request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> { 
    return super.request(url, options);   
    } 

    get(url: string, options?: RequestOptionsArgs): Observable<Response> { 
    // Add headers into options 
    (...) 
    return super.get(url, options); 
    } 

    (...) 
} 

e registri come descritto di seguito:

bootstrap(AppComponent, [ 
    HTTP_PROVIDERS, 
    provide(Http, { 
    useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new CustomHttp(backend, defaultOptions), 
    deps: [XHRBackend, RequestOptions] 
    }) 
]); 

Spero che ti aiuta, Thierry

+0

C'è un modo siamo in grado di modificare il ritorno osservabile all'interno del servizio. Come cambiare cosa succede quando la richiesta è iniziata o finita? Come lo faremo? – xmaestro

+0

In breve possiamo modificare l'osservabile che viene restituito? – xmaestro

+1

Con l'opzione 2, ecco una guida completa sull'aggiunta di intestazioni HTTP predefinite (e cattura gli errori http) estendendo la classe Http - http://www.adonespitogo.com/articles/angular-2-extending-http-provider/ –

Problemi correlati