アップデート
自分で解決したと思います。以下のソリューションとして投稿したインターセプターを確認してください。
オリジナル
リクエストがどのように行われているかを発信者に知らせることができる http インターセプターを書くことができるかどうか疑問に思っていました。
今、バックエンドを呼び出したいときは、渡すオブジェクトに属性を設定するラッパーで $http 呼び出しをラップします。
publ.wrap = function(f, ctrl){
ctrl.busy = true;
ctrl.error = false;
return f()
.then(function(res){
ctrl.busy = false;
ctrl.result = res;
return res;
}).catch(function(err){
ctrl.busy = false;
ctrl.error = err;
ctrl.result = undefined;
})
};
publ.login = function(args, ctrl){
publ.wrap(function(){
return $http.post('http://localhost:3001/authenticate', {
username : args.username,
password : args.password
}).then(function(jwt){
$cookies.put('token', jwt);
})
}, ctrl);
};
この場合、login(authArgs, $scope.loginCtrl)
ログイン ページ コントローラーを呼び出します。次に、ログイン テンプレートでloginCtrl.busy
, loginCtrl.result
&を使用します。loginCtrl.error
バックエンドに対して行うすべての呼び出しで、これらの属性を設定し、リクエストを開始するビューで使用できるようにしたいと考えています。
このようなラッパー関数を使用すると仕事が完了しますが、インターセプターを使用して実行できるかどうか疑問に思っていますか? これにより、すべてのバックエンド呼び出しをサービスで明示的にラップする必要のない、よりクリーンな要求フローが提供されるように感じます。
今、私はhttpInterceptorsを読んで、ユーザー提供のオブジェクトに属性を設定させる方法を見つけることができないようです. 私が見つけた最後のものは、例(タイムスタンプマーカー(リクエストおよび応答インターセプター))を含むこの記事request
で、インターセプターステージとresponse
インターセプターステージの両方で構成オブジェクトに属性を追加します。responseError
ステージまたは発信者コントローラーで。
どんな助けでも大歓迎です:)