1

基本的にいくつかの CRUD タイプの操作のラッパーであるサービスがあります。

app.service('fooService', function ($http) {

    this.getfoo = function(id) {
        return $http.get('api/foo/Get/' + id).then(function (result) {
            return result.data;
        });
    };

    this.getfoos = function () {
        return $http.get('api/foo/Get').then(function (result) {
            return result.data;
        });
    };

    this.createfoo = function(foo) {
        return $http.post('api/foo/Create', foo).then(function(result) {
            return result;
        });
    };

    this.updatefoo = function(id, foo) {
        return $http.put('api/foo/Update/' + foo.id, foo).then(function (result) {
            return result.status;
        });
    };

    this.deletefoo = function(id) {
        return $http.delete('api/foo/Delete/' + id).then(function (result) {
            return result.status;
        });
    };
});

例外を処理する最良の方法は何ですか? これを行うための優れた単体テスト可能な方法はありますか? このサービスを使用するコントローラーは、それが AJAX 呼び出しであることを認識すべきではないと推測しています。これは、データストアとして機能するサービスと通信するための標準的な方法が必要ということですか? 成功インジケータとメッセージで返すオブジェクトはありますか? 例えば

var tmp = {
    success: false,
    error: 13,
    message: 'This foo already exists'
}
4

2 に答える 2

0

$http.delete('api/foo/Get/' + id)promise を返すため、次のようなエラー ハンドラを使用できます。

app.service('fooService', function ($http) {

 var tmp = {
           success: false,
           error: -1,
           message: ''
           }

    this.getfoo = function(id) {
        return $http.get('api/foo/Get/' + id).then(function (result) {
            return result.data;
        }, function (result) {
            tmp.message = "blablblab";
            tmp.error = result.status;
            return tmp;
        });
    };
    ....
});

デモFiddle

于 2013-10-28T10:15:36.710 に答える