繁体   English   中英

处理成功/错误响应http请求angularjs

[英]handle success/error responses http request angularjs

我的app.js中有一个名为UserService的工厂,该工厂为我执行所有用户HTTP请求。

当我尝试创建用户时,我具有以下方法。

function create(user) {
  return $http.post(envService.read('apiUrl') + '/auth/register', user).then(handleSuccess, handleError('Error creating user'));
}

然后在我的控制器中执行以下操作:

function register() {
  vm.dataLoading = true;
  UserService.create(vm.user).then(function successCallback(response) {
      $location.path('/');
      Flash.create('success', response.message);
  }, function errorCallback(error) {
      Flash.create('danger', error);
      vm.dataLoading = false;
  });
}

处理成功和错误的功能

  // private functions

  function handleSuccess(res) {
      return res.data;
  }

  function handleError(error) {
      return function () {
          return { success: false, message: error };
      };
  }

但是,即使响应代码是403或导致错误的其他任何内容,它也总是进入成功回调。 我在这里做错什么了吗?

在Angular JS中,当您为'$ http'提供回调函数时,可以选择不将参数设置为类似

$http.get('/someUrl', config).then(successCallback, errorCallback);

或者您在函数内部提供回调,例如

$http({
method: 'GET',
url: '/someUrl'
    }).then(
       function successCallback(response) {}, 
       function errorCallback(response) {}
       );

另一方面,如果您确实想在回调中调用自己的函数,则可以选择这种方式,

      $http(
      {
        method: this.url.method,
        url: serviceURL,
      }
      ).
      success(function(data, status, headers, config) {
          successCallback(data, status, headers, config);
      }).
      error(function(data, status, headers, config) {
         errorCallback(data, status, headers, config);
      });  

因此,基本上,您的回调函数需要一个“ response”参数,其中包含

  1. data – {string | Object} –使用转换函数转换的响应主体。
  2. status – {number} –响应的HTTP状态代码。
  3. 标头 – {function([headerName])} –标头获取函数。
  4. config – {Object} –用于生成请求的配置对象。
  5. statusText – {string} –响应的HTTP状态文本。

在您的代码中,我将使用一些适当的回调更改handleError('Error creating user') ,并在回调中接收该对象。

要了解详细信息,请阅读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM