2017-11-25 2 views
-2

나는 Restful API facotires 오류 처리의 다른 예를 보았으며 약간 혼란 스럽다.AngularJS HTTP 요청 오류 처리

angular.module('app').controller('userCtrl', function($scope, User) { 
    $scope.users = []; 
    $scope.error = ''; 

    User.getUsers().then(function(response) { 
     $scope.users = response.data; 
    }, function(response) { 
     $scope.error = 'Users not found'; 
    }) 
}); 

angular.module('app').factory('User', function($http) { 
    var service = {}; 

    service.getUsers = function() { 
     return $http.get('url-here').then(function(response) { 
      return response; 
     }); 
    } 

    return service; 
}); 

B

angular.module('app').controller('userCtrl', function($scope, User) { 
    $scope.users = []; 
    $scope.error = ''; 

    User.getUsers().then(function(response) { 
     if(response.status == 404) { 
      $scope.error = 'Users not found'; 
     } else { 
      $scope.users = response.data; 
     } 
    }); 
}); 

angular.module('app').factory('User', function($http) { 
    var service = {}; 

    service.getUsers = function() { 
     return $http.get('url-here', function(response) { 
      return response; 
     }, function(response) { 
      return response; 
     }); 
    } 

    return service; 
}); 

가장 좋은 방법은 하나입니다 : 여기에 두 가지 예입니다? 마찬가지로 사용자가 없으면 은 사용자가 없음을 말하고 내부 서버 오류 (500)가있는 경우 "나중에 문제가 발생했습니다"와 같은 내용을 말하고 싶습니다.

+1

수정하시기 바랍니다 질문에 충분한 정보와 특정 문제로 제한하기를 식별하기 위해 적절한 대답. 한 번에 여러 개의 다른 질문을하지 마십시오. A와 B 모두 옵션 B가 더 나쁜 erronoeus입니다. – georgeawg

+0

죄송합니다, 질문을 편집했습니다. @georgeawg – Jis0

+0

이 질문을 삭제하고 해결할 단 하나의 예제가있는 새 질문을 작성하십시오. – georgeawg

답변

0

나는 두 가지 이유, 옵션 와 함께 갈 것입니다 :

  • 오류가 발생했습니다 있음을 명시합니다.
  • 표시되는 페이지에 따라 이러한 오류를 개인 설정할 수 있습니다 (사용자가 속한 페이지 또는 구성 요소에 따라 404 오류를 다르게 처리 할 수 ​​있음).

그런 다음과 같이 에러 코드에 따라 특정 메시지를 제공하기 위해 switch 문을 사용할 수 있습니다 :

User.getUsers().then(function(response) { 

    $scope.users = response.data; 

}, function(response) { // error has occured 

    switch(response.status) { 

     case "404": 
      $scope.error = "Users not found."; 
      break; 

     case "403": 
      $scope.error = "You do not have permission to view these users."; 
      break; 

     case "500": 
      $scope.error = "We are having server issues. Please try again in 10 minutes."; 
      break; 
    } 
});