簡體   English   中英

如何正確處理服務器端錯誤?

[英]How to properly handle server side errors?

我正在使用angular.js開發web應用程序,我目前對處理錯誤的正確方法感到困惑。 在我的應用程序中,我使用ngResource來調用服務器的rest API。 所以我會有很多ngResource api調用。

例如用戶資源,有user.query(),user.get(),user.save()......我想把錯誤回調放到所有ngResource api調用中嗎? 只是為了處理各種錯誤:如服務器關閉或無法訪問互聯網?

我只是不認為在每個ngResource api調用中放置一個錯誤回調是個好主意。 這將產生大量冗余代碼並使我的代碼不整齊。

您將如何處理各種錯誤類型?

您可以使用攔截器並在發生錯誤時執行任何操作:

var app = angular.module("myApp", []);

app.config(function ($provide, $httpProvider) {
    $provide.factory('ErrorInterceptor', function ($q) {
        return {
            responseError: function(rejection) {
                console.log(rejection);
                return $q.reject(rejection);
            }
        };
    });

    $httpProvider.interceptors.push('ErrorInterceptor');
});

使用此攔截器,您可以讀取狀態代碼並執行您需要的操作(如果狀態代碼為401,則完美的用例是將用戶重定向到登錄頁面)。

由於ngResource使用$ http,因此在調用資源方法時也會執行攔截器。

當然,您可以執行更多操作並在發出請求之前/之后添加攔截器。

請參閱此處的完整文檔: http//docs.angularjs.org/api/ng.$http

看到這個小提琴: http//jsfiddle.net/4Buyn/為一個工作樣本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM