2016-07-27 5 views
5

私は、次のAPIルートすべてのRESTful API呼び出しを角度サービスで定義する必要がありますか?

/api/user/:id 
/api/user/inbox 
/api/user/blah 

これらのすべてを1つの角度のサービスで定義されていることでしょう呼びたいでしょうか?そして私はそれをどうやってやるのだろう?私が見てきたすべてのチュートリアルでは、すぐにリソースを返すサービスがあります。通常はCRUD操作用です。私はおそらく複数のコントローラでこれらのルートを呼び出すだろうので、私はそれが1つのサービスで有益だと思う。誰かが、これらのルートを呼び出すサービスをどのように作成するかの例を示すことができますか?

私は他のコントローラでは、このような操作を行うにはしたいと思い

$ APIは私が定義するとgetuserInboxは、()/ API /ユーザー用のHTTP要求を行う機能であるサービスです
$scope.inbox = $api.getUserInbox() //function which requests api/user/inbox 

$scope.user = $api.getUser() //function which requests api/user/:id 

$scope.blah = $api.getUserBlah() //function which requests api/user/blah 

/受信トレイ

答えて

4

はい、すべてのRESTfull API呼び出しをサービスに入れるのが理想的です。

  • URLは1か所にまとめられているため、APIを変更する(または別のバージョンを使用する)と、1か所で変更できます。
  • $ refへのalternateを簡単にリファクタリングして使用することができます。例:restangular。
  • すべてのリクエストが単一の場所にあるので、リクエストに対して一般的なエラー処理を簡単に追加できます。
  • テストが容易になります。代わりに$ httpBackend


app.service('userAPI', function($http) { 
    var self = this; 
    var baseUrl = "api/user/"; 

    self.getUser(id) { 
     return $http.get(baseUrl + id); 
    } 
}); 

app.controller('myController', function($scope, userAPI) { 
    userAPI.getUser(1).then(function(response) { 
     $scope.user = response.data; 
    }; 
} 

PSをいじりのあなたのAPIサービスだけで 'モック' - あなたは真のRESTfullのAPIを消費している場合、私はあなたがRestangular考える示唆しています。

関連する問題