2016-04-30 20 views
4

Angular $ httpリクエストでAPIにアクセスして、さまざまなサッカーチームの情報を収集しています。複数のAPI呼び出しを1つのサービス(角度)で参照する

私が1つのチームにしかアクセスしない場合、これはうまくいくでしょう - 私はコールを行ったサービスを作成してから、自分のコントローラーでサービス機能を参照します。しかし、私は、それぞれに個別のサービスモジュールを作成することなく、多数のチームでこれを実行したいと考えています。

私のコントローラ内部の

サービス

app.factory('APIService', ['$http', 
    function($http) { 
     return $http.get('http://API/team/1204?Authorization=xxxxx') 
     .success(function(data) { 
     return data; 
     }) 
     .error(function(err) { 
     return err; 
     }); 
    } 
]); 

...

APIService.success(function(data) { 
    $scope.apiData = data; 
}); 

あなたがサービスで見ることができるように、チームが特定され、 "1204"、とだけ引っ張ってきますその1つのチームからのデータにチームに応じて4桁のコードを交換できるようにする関数を作成したいのですが、どのように、どこに置くのかわかりません。

大変お手伝いをいたします。前もって感謝します。

答えて

2

アプリケーションで必要な唯一のサービスである汎用角度サービスを作成しました。

https://github.com/cullimorer/AngularGenericAPIService

サービスは、多数の異なる方法含ま:

GET(アレイ) - GetListData

GET - GetDataの

PUT - にupdateData

POST - AddData関数

DELETE - DeleteData

これは何が特別ですか?さて、あなたが好きなだけ多くのパラメータを渡すエンドポイントを呼び出すことができます。これは、C#の "string.Format"関数のように動作し、指定されたオブジェクトの値を受け取り、別の文字列に挿入します。 commonServiceには、汎用APIサービスで使用するためにこの機能を複製する "stringFormat"というメソッドが含まれています。

実際にこれを行う方法を見てみましょう。あなたは、単一の「fooBarに」を返すように1の「ID」を渡して「fooBars」と呼ばれる安らかなAPIエンドポイントを呼び出したい場合、我々はそうのようにそれを行うだろう:

return genericService.getData('fooBars/{0}', [1]); 

これは、とのAPIを呼び出しますURL:

http://localhost/API/fooBars/1

2番目のパラメータは、アレイ、あなたが文字列に好きなようにあなたは我々が「FOOS」の数を持っているとしようと、「バー」、など多くのパラメータを渡すことができますこの方法です次のようなことがあります:

return genericService.getData('foos/{0}/bars/{1}', [1, 2]); 

これはURLとAPIを呼び出します。

"http://localhost/API/foos/1/bars/2"

そしてなどを。これは非常にシンプルなサービスですが、AngularJSプロジェクトではこれを使用します。実装が簡単で、Angularサービスでさまざまなクエリを作成したり、長い文字列連結を記述する必要がないためです。

+0

あなたはまた、えーえが良いコール、感謝のブラジャーをいや –

+0

コメントとしてお答えし、[リンク](https://github.com/cullimorer/AngularGenericAPIService)を追加することが可能性があり、 – cullimorer

+1

あなたは 'ngResource'を知っていますか? OPが尋ねてきたことの中でその音がより良く聞こえます –

関連する問題