2016-05-03 7 views
3

私はAureliaのフェッチクライアントを使用して自分のサーバーと通信します。フェッチクライアントを使用するすべてのviewModelでは、カスタムヘッダー(トークン)を送信するためにインターセプターを使用するようにクライアントを構成する必要があります。Aurelia:フェッチクライアントの設定

各viewModelのインターセプタコードを書き換えるのではなく、フェッチクライアントをどこかで一度設定する方法がありますか?

答えて

5

main.jsファイルに設定できます。このように:

... 
aurelia.use 
    .standardConfiguration() 
    .developmentLogging(); 

let container = aurelia.container; 

let http = new HttpClient(); 
http.configure(config => { 
    config 
    .useStandardConfiguration() 
    .withBaseUrl('http://localhost:8080/api/') 
    .withDefaults({ 
    headers: { 
     'Authorization': tokenVariable // <---- your magic here 
    } 
    }) 
    .withInterceptor({ 
    request(request) { 
     console.log(`Requesting ${request.method} ${request.url}`); 
     return request; 
    }, 
    response(response) { 
     console.log(`Received ${response.status} ${response.url}`); 
    } 
    }); 
}); 

container.registerInstance(HttpClient, http); 

ここで、上記で設定したインスタンスを取得するには、HttpClientを注入するだけです。 https://github.com/aurelia/fetch-client/blob/master/doc/article/en-US/http-services.md

+0

@inject(HttpClient) export class MyViewModel { } 

詳しい情報はどのようにして、各特定のURLのためのAPIのURLを設定するのでしょうか? –

+0

各コールに対してURL全体を設定する必要はありません。 'http:// localhost:8080/api /'のようにベースURLを設定することができます。それから 'this.http.fetch( 'something')'を呼び出さなければなりません。最終的なURLは - > 'http:// localhost:8080/api/something' –

+0

私はそれをテストしましたが、" HttpClient "というエラーは見つかりませんでした。その後、「aurelia-fetch-client」から「import {HttpClient}」を追加しましたが、エラーは「TypeError:window.localStorpassword is undefined」です。ローカルストレージからトークンを取得するために使用します。 –

関連する問題