私はangular(およびプログラミング)に不慣れです。ここでは一見単純な質問ですが、理解できませんでした。
一部のチュートリアルでは、$httpProvider.interceptors.Push('interceptorName')
を使用してhttp要求と応答を操作することを提案しています。
インターセプターについてもっと知りたいので公式ドキュメントを見てみましたが、インターセプターに関連するものは何も見つかりませんでした。メソッド(useApplyAsync([value]);)とプロパティ(デフォルト)だけが_$httpProvider
_( docs )。
他のチュートリアルから、インターセプターは通常のサービスファクトリであり、その使用方法は知っていますが、私の質問は、構文が$httpProvider.interceptors.Push('interceptorName')
であるため、「インターセプター」と呼ばれるプロパティが見つかることを期待しています_$httpProvider
_にありますが、実際にはできません。この混乱を得るために私が逃したものはありますか?それとも、私のコンセプトは下から完全に間違っていますか?
インターセプターは ドキュメントはこちら にあります。
これを書く方法の例を示します。
_.config([
'$httpProvider',
function($httpProvider) {
var interceptor = [
'$q',
'$rootScope',
'userSession',
function($q, $rootScope, userSession) {
var service = {
// run this function before making requests
'request': function(config) {
if (config.method === 'GET' || userSession.isAuth()) {
// the request looks good, so return the config
return config;
}
// bad request, so reject
return $q.reject(config);
}
};
return service;
}
];
$httpProvider.interceptors.Push(interceptor);
}
])
_
インターセプターに関する_$httpProvider
_ドキュメントページに何もない理由は、開発者が _$http
_スクリプトに次のコードを含めなかったためですから生成されます :
_/**
* @ngdoc property
* @name $httpProvider#interceptors
* @description
// etc
_
一般的に、ドキュメントは不完全、不正確、または混乱していることがわかっています。最近まで、私は何かを見つけられない、または理解できないときに自分が問題であるといつも思っていましたが、ドキュメントが汚いだけであることが多いことがわかりました。ただし、使用できる優れたツールがあることに感謝し、ツールのマニュアルではなくツールの作成に時間を費やす必要があったため、おそらくドキュメントが貧弱であることを覚えておいてください。
最も信頼できる「ドキュメント」はソースコード自体ですが、読むのはずっと面倒です。上記でリンクしたソースコードでは、_this.interceptors = []
_を確認できます。 this
は_$httpProvider
_を参照するため、空の配列の値を使用して、プロパティinterceptors
を_$httpProvider
_に割り当てています。インターセプターを追加するには、インターセプターをこの配列にPush()
するだけです。