サービスでの $http の処理に関する関連する質問がありますが、少し詳しく説明したいと思います。コントローラーが Angular $http API に似た API を使用してサービス呼び出しを実行できるようにしたいと考えています。
$scope.login = function(user) {
securityService.login(user).success(function(data) {
$scope.data = data;
}).error(function(data) {
$scope.error = data;
});
};
これは読みやすい API です。表面的には、サービス API で行う必要があるのは次のことだけです。
return {
name : 'User Service',
login : function(user) {
return $http.post("/api/login", user);
}
};
素晴らしい、それはプロミスを返し、success
メッセージerror
が付属しています。しかし... サービスの成功と失敗のケースに対処したい場合はどうすればよいですか? 素敵で読みやすいサービス API を維持したいと考えています。securityService.currentUser()
この場合、 「securityService.isLoggedIn()」などのメソッドを公開できるように、ユーザーを保持したいと思うかもしれません。
$http.post().then(...)
promise APIを試しましたが、それらは HTTP 応答全体を返します。ここでも、HTTP をサービスに分離し、同様の具体的なコールバック API を維持したいと考えています。