我如何 get/catch 从 get API 响应状态代码

How do I get/catch response status code from get API

下面是代码

UserService.api.getProfile({userLogin: $scope.login}, function(res) {
            _.each($scope.visibility, function(e) {
                e.visible = (_.find(res, { 'roleName': e.name })) ? true : false;
            });
        });

而对于 userService.api.getProfile 将如下所示

angular.module('frontendApp').factory('UserService', [
'$resource',
function($resource) {
    return {
        api: $resource('service/authority-roles/:roleId', {}, {
            getProfile: {
                method: 'GET',
                url: 'service/user/:userLogin/authority-roles',
                isArray: true
            }

如果 API 发送响应 200,它工作正常。但是,当 API returns 响应 404 时,代码无法捕获状态。

我尝试使用“Try”和“Catch”,但没有用。我还在 res.status 上做了 console.log 来获取状态代码,但该值未定义。

计划是,如果 API 返回 400 响应,则警告“未找到用户”消息。

感谢您对此提供的帮助。提前致谢。

假设您没有任何可以处理此问题的全局 $http 拦截器,您可以通过 specifying an interceptor object 在您的 [=13] 上按每个 api 方法执行此操作=] 动作,像这样:

getProfile: {
  method: 'GET',
  url: 'service/user/:userLogin/authority-roles',
  isArray: true,
  interceptor: {
    responseError: function(rejection) {
      // do something on error
      return $q.reject(rejection);
    }
  }
}

您可以阅读有关拦截器的更多信息here