8

合理的な質問のように思えるものに対する答えが見つからないようです。

$http サービスを使用して、すべてのアプリの Web サービスを呼び出しています。すべてのサーバー API は、特定のアドレスでホストされています。$http を取得して、提供された URL に常に API サーバーのプレフィックスを付ける方法はありますか?

たとえば、API が にある場合、次のhttp://myAPi/API/ように呼び出せるようにしたいと考えています。

$http.get("User")...

とは対照的に:

$http.get("http://myAPI/API/User")

そして、Angular はリクエストの前にサーバー アドレスを付けます。目的は、URL がアプリ全体に広がらないようにすることです。

Angular でこれを達成する方法はありますか?

4

3 に答える 3

5

$http にはこのケースを処理する組み込みの方法がないため (angular.js ソース コードを編集する以外に)、サービスで $http をラップすることができます。

apiService.get('user'); //where the service defines the $http call and builds the URL

... または単に角度定数を作成します。

angular.module('myApp', []).constant('apiPrefix', 'http://myAPI/API/')

$http.get(apiPrefix + 'User')

どちらの方法でも、「アプリ全体に URL が広がらない」という結果になります。

于 2013-08-29T07:12:19.343 に答える
-1

http プロバイダーにインターセプターを追加することができます。

// register the interceptor as a service
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
  return {
    // optional method
    'request': function(config) {
      // do something on success
      return config || $q.when(config);
    }
}

次に、インターセプターを登録します。

$httpProvider.interceptors.push('myHttpInterceptor');

構成を編集するだけです:)

于 2013-11-25T14:48:47.217 に答える