2016-06-13 9 views
0

Angular 2を使用してカスタムHTTPヘッダーを追加または作成する方法を知っている人はいますか? http depencyとどのように我々はjqueryの中であなたがHTTPメソッドの残りの部分とヘッダーを使用することができます。もちろん、HTTP角2?

$.ajax({ 
    url: 'foo/bar', 
    headers: { 'x-my-custom-header': 'some value' } 
}); 

答えて

2
let headers = new Headers(); 
headers.append('x-my-custom-header', 'some value'); 

http.get('foo/bar', { headers: headers }); 

を使用してヘッダーを使用する方法を注入する方法を 。

0

Angular2のHTTPサポートを使用するには、いくつかのステップがあります。

  • はSystemJS設定でHTTPモジュールを指定します。

    アプリケーションをブートストラップするときHTTP_PROVIDERSプロバイダを設定し
    System.config({ 
        (...) 
        map: { 
        app: "./src", 
        '@angular': 'https://npmcdn.com/@angular', 
        'rxjs': 'https://npmcdn.com/[email protected]' 
    }, 
    packages: { 
        app: { 
        main: './main.ts', 
        defaultExtension: 'js' 
        }, 
        '@angular/core': { 
        main: 'core.umd.js', 
        defaultExtension: 'js' 
        }, 
        (...) 
        '@angular/http': { 
        main: 'http.umd.js', 
        defaultExtension: 'js' 
        }, 
        rxjs: { 
        defaultExtension: 'js' 
        } 
        } 
    }); 
    
  • bootstrap(AppComponent, [ HTTP_PROVIDERS ]); 
    
  • nはあなたがHTTPリクエストを実行するHttpクラスのインスタンス:

    import {Http} from '@angular/http'; 
    
    @Component({ 
        (...) 
    }) 
    // It can also be @Injectable() in the case of a service 
    export class SomeComponent { 
        constructor(private http:Http) { 
        } 
    } 
    
  • は、要求を実行するHTTPインスタンスを使用します。

    import {Http, Headers} from '@angular/http'; 
    
    @Component({ 
        (...) 
    }) 
    // It can also be @Injectable() in the case of a service 
    export class SomeComponent { 
        (...) 
    
        executeRequest() { 
        let headers = new Headers(); 
        headers.append('x-my-custom-header', 'some value'); 
    
        this.http.get('foo/bar', { headers }); 
        } 
    
  • は応答を得るために要求応答で購読

    executeRequest() { 
        let headers = new Headers(); 
        headers.append('x-my-custom-header', 'some value'); 
    
        this.http.get('foo/bar', { headers }).map(res => res.json()) 
         .subscribe((data) => { 
         this.data = data; 
         }); 
        } 
    

    この手順を忘れないでください。オブザーバブルが怠けているためです。だから、彼らに契約をしなくても、要求は

0

に実行されることはありません私はあなたがこのようなあなたのRESTエンドポイントを定義し、独自のサービスでHTTPサービスをラップ提案します:

import { Injectable, } from '@angular/core'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/toPromise'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 

import { Headers, Http, Response, RequestOptionsArgs } from '@angular/http'; 


@Injectable() 
export class RestService { 
    constructor(private http: Http) {} 
    get<T>(url: string): Observable<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.get(url, options) 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 
    post<T>(url: string, data: any): Observable<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.post(url, data, options) 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 
    put<T>(url: string, data: any): Observable<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.put(url, data, options) 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 
    patch<T>(url: string, data: any): Observable<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.patch(url, data, options) 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 
    delete<T>(url: string): Observable<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.delete(url, options) 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 

    private extractData<T>(response: Response) { 
     var resp: T; 
     try { 
      resp = response.json() as T; 
     } catch (error) { 
     } 
     return resp; 
    } 

    private prepareRequestHeaders() { 
     var headers = new Headers(); 
     headers.append('x-my-custom-header', 'some value'); 
     headers.append('Content-Type', 'application/json'); 
     // etc 
     return headers; 
    } 


    private handleResponse<T>(response: any): T[] { 
     var resp: T[]; 
     try { 
      resp = response.json().data as T[]; 
     } catch (error) { 
     } 
     return resp; 
    } 
    private handleError(error: any): Promise<any> { 
     return Promise.reject(error.message || error); 
    } 
} 

かもし約束を好む:

import { Injectable, } from '@angular/core'; 
import 'rxjs/add/operator/toPromise'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 
import { Headers, Http, Response, RequestOptionsArgs } from '@angular/http'; 


@Injectable() 
export class RestService { 
    constructor(private http: Http) {} 
    get<T>(url: string): Promise<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.get(url, options) 
      .map(this.extractData) 
      .catch(this.handleError).toPromise(); 
    } 
    post<T>(url: string, data: any):Promise<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.post(url, data, options) 
      .map(this.extractData) 
      .catch(this.handleError).toPromise(); 
    } 
    put<T>(url: string, data: any):Promise<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.put(url, data, options) 
      .map(this.extractData) 
      .catch(this.handleError).toPromise(); 
    } 
    patch<T>(url: string, data: any):Promise<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.patch(url, data, options) 
      .map(this.extractData) 
      .catch(this.handleError).toPromise(); 
    } 
    delete<T>(url: string):Promise<T> { 
     var options = {} as RequestOptionsArgs; 
     options.headers = this.prepareRequestHeaders(); 
     return this.http.delete(url, options) 
      .map(this.extractData) 
      .catch(this.handleError).toPromise(); 
    } 

    private extractData<T>(response: Response) { 
     var resp: T; 
     try { 
      resp = response.json() as T; 
     } catch (error) { 
     } 
     return resp; 
    } 

    private prepareRequestHeaders() { 
     var headers = new Headers(); 
     headers.append('x-my-custom-header', 'some value'); 
     headers.append('Content-Type', 'application/json'); 
     // etc 
     return headers; 
    } 


    private handleResponse<T>(response: any): T[] { 
     var resp: T[]; 
     try { 
      resp = response.json().data as T[]; 
     } catch (error) { 
     } 
     return resp; 
    } 
    private handleError(error: any): Promise<any> { 
     return Promise.reject(error.message || error); 
    } 
}