問題タブ [angular-http-interceptors]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - AngularJS で 2 つの別個の $http サービス インスタンスを使用するには?
$http
呼び出しによって送信されたデータを に保存する angularjs サービスを実装していますlocalStorage
。そのために、リクエスト インターセプタを使用しているため、http リクエストが 経由$http
で送信されるたびに、データが に保存されlocalStorage
ます。以下は、インターセプターの私のコードです。
上記のインターセプターを機能させるには、それを のinterceptors
配列に登録する必要があり$httpProvider
ます。私はそれを達成するためにこれを行いました、
問題
OfflinkJS
これで、モジュールを別のモジュールで使用すると、すべての$http
呼び出しがインターセプターを通過します。しかし、$http
サービスによって送信されたいくつかのリクエストでインターセプターを使用し、他のいくつかのリクエストでNOTを使用したいと思います。
サービスはシングルトンであるため$http
、アプリケーションの別々の場所でサービスの 2 つのインスタンスを使用する方法がわかりません。これを達成する方法はありますか?
私はこの質問をしましたが、循環依存の問題に実際に対処しているようです
angularjs - Angular でリクエスト ヘッダーを設定およびオーバーライドする正しい方法
使用している認証方法のために、すべてのリクエストにグローバル http ヘッダーを設定する必要があります。SSO アプローチを使用してユーザーを認証するための Identity Server があります。これまでのところ、インターセプターを使用してヘッダーをグローバルに設定していました。ただし、認証方法を使用しないサードパーティ API にリクエストを送信する必要がある場合があります。インターセプターによって構成された認証ヘッダーをオーバーライドするにはどうすればよいですか? この問題に対する推奨されるアプローチはありますか?
javascript - AngularJS アプリとインターセプターを別のファイルに分ける方法
$http インターセプターとアプリ構成を別々のファイルに分離することに問題があります。これは私が試したことです:
app.js
authService.js
login.js
authService.js のコードを app.js ソースコードの直下に配置するとすべて問題ありませんが、別のファイルに配置すると、エラーは発生しませんが、インターセプターは機能しません。
誰でもこれを手伝ってもらえますか?
angularjs - Cordova での Angular の動作の違い
john papas styleguideに近いいくつかのモジュールを使用して角度のあるアプリを構築しています。それに続いて、独自のルート定義を持ついくつかの独立したモジュールと、インターセプターを持つ他のモジュールがあります。私の問題は、Cordova / Androidで実行すると、状態定義をメインモジュールに配置したときにのみ機能するように見えることです。私のブラウザで仕事。誰かがこの問題を解決しましたか?
たとえば、これはローカル ブラウザーと cordova を搭載したデバイスの両方で機能します。
これはローカルブラウザでのみ機能します(メインモジュールは上記と同じ):
エラーは、ナビゲーションで状態が見つからなかったことを示しています。
angularjs - インターセプト リクエストとペイロードの変更
次のようなサービスがあります。
また、PUT メソッドでリクエストをインターセプトして、ID 属性なしでペイロードを送信したいと思います。これは、URL に属性が既にあるためです。
これらの関数を作成しました:
問題は、id属性が画面 (フォーム) で削除されていることです。ユーザーが同じレコードのデータを何度も変更して、永久に滞在したい状況を想定します。
angularjs - 循環依存が見つかりました: Http Response Interceptor 401
基本的な考え方は、HTTP 応答インターセプターを使用して、401 ステータスが表示された場合に Web ページをリダイレクトすることでした。しかし、これが正しい方法で行われているかどうかはわかりません。このようなものだと思っていましたが、見た目よりも難しいようです。現時点では、循環依存関係が見つかりました。
インターセプターを別の場所にプッシュする必要がありますか? そして、インターセプターは、401 リクエストを受信したかどうかをどのように知ることができますか? どの 401 をインターセプトする必要があり、どれを無視するかを定義することもできますか?
これは私のサービスです:
Update2
コメントで述べたように、私は多くのものに注入していました。これは修正された問題の 1 つですが、ログイン ページに移動すると、ページ (localhost:8080/user) の読み込み時にリクエストが行われ、ログイン ページへのリダイレクトの無限ループが発生し、結果としてブラウザがクラッシュします。 .
どの URL をリダイレクトする必要があり、どの URL をリダイレクトしないかを Interceptor に伝える方法はありますか
angularjs - API 呼び出し URL を変更する $http リクエストを傍受する
API呼び出しのURLを変更し、API URLを各サービス関数に挿入されたインターセプターのajax呼び出しの先頭に追加しようとしています
ただし、インターセプターは、.css、.html、または .json ファイルなどのすべての http 要求をインターセプトします。他の http リクエストを変更せずにインターセプターの URL を変更する良い方法は何ですか?
javascript - $httpProvider.interceptors が「未定義」の値を返すのはなぜですか
Yelp の API を使用する基本的な AngularJS アプリを作成しましたが$httpProvider.interceptors
、応答を解析するのに問題があります。
これが私のアプリです:
私のyelpAPI
サービス (写真にはありません) は、API リクエストを認証し、HTTP リクエストを生成します。次に、受信したデータを次のように Web コンソールに出力します。
ここに私の要求からのデータがあります:
businesses
プロパティに配置された配列が必要です。そのため、配列$httpProvider.interceptors
内で見つかったオブジェクトを解析するために使用することをお勧めします。Object.businesses
$httpProvider.interceptors
最初のリクエストを行ったときの様子は次のとおりです。
$httpProvider.interceptors
現在の外観は次のとおりです。
現在、次のようなエラーが表示されていますTypeError: Cannot read property 'businesses' of undefined
。私が見落としているものはありますか?
編集#1
インターセプター内で使用console.log(response)
して応答を出力したところ、response.businesses
実際にはresponse.data.businesses
. これでエラーは解決しましたが、$http
呼び出しが返されundefined
ました。私の新しい問題は何でしょうか?
編集#2
javascript - AngularJS http インターセプターと選択的な URL
$http インターセプターが特定のパターンにのみ反応するようにするにはどうすればよいですか?
たとえば、インターセプターがすべての「/api/*」リクエストを処理し、他のリクエストはそのままにしておきたいと思います。