Web API 304'未修改'响应错误如何在Angularjs中忽略

时间:2016-10-21 12:10:47

标签: angularjs

我面临的问题很少,我的Web API给我回复304' Not Modified'当发送更新的数据没有变化时响应,我的应用程序已实现错误页面,这会将我重定向到错误页面。我希望这不会出现错误,而应该忽略它。

请帮助我如何使用HTTP拦截器忽略此响应。以下是编写的代码拦截HTTP响应,然后根据错误将我重定向到特定页面,我需要忽略304响应:

myApp.factory('httpErrorResponseInterceptor', ['$q', '$location',
  function ($q, $location) {
      return {
          response: function (responseData) {
              return responseData;
          },              

          responseError: function error(response) {

              switch (response.status) {
                  case 401:                          
                      $location.path(baseUrl + 'Account/Login');
                      break;
                  case 403:
                      $location.path(baseUrl + '403');
                      break;
                  case 404:
                      $location.path(baseUrl + '404');
                      break;
                  case 405:
                      $location.path(baseUrl + '405');
                      break;
                  case 500:
                      $location.path(baseUrl + '500');
                      break;
                  case 503:
                      $location.path(baseUrl + '503');
                      break;
                  case 408:
                      $location.path(baseUrl + 'timeout');
                      break;
                  default:
                      $location.path(baseUrl + 'error');
              }

              return $q.reject(response);
          }
      };
}
]);

1 个答案:

答案 0 :(得分:0)

通过编写此代码,我找到了忽略304'Not Modified'错误响应的解决方案:

//ignore 304-'Not Modified' response
if (response.status === 304) {
   return $q.resolve(response);
}

完整的解决方案如下:

smartBizzApp.factory('httpErrorResponseInterceptor', ['$q', '$location',
  function ($q, $location) {
      return {
          response: function (responseData) {
              return responseData;
          },              

          responseError: function error(response) {

              //ignore 304-'Not Modified' response
              if (response.status === 304) {
                  return $q.resolve(response);
              }

              switch (response.status) {
                  case 401:                          
                      $location.path(baseUrl + 'Account/Login');
                      break;
                  case 403:
                      $location.path(baseUrl + '403');
                      break;
                  case 404:
                      $location.path(baseUrl + '404');
                      break;
                  case 405:
                      $location.path(baseUrl + '405');
                      break;
                  case 500:
                      $location.path(baseUrl + '500');
                      break;
                  case 503:
                      $location.path(baseUrl + '503');
                      break;
                  case 408:
                      $location.path(baseUrl + 'timeout');
                      break;
                  default:
                      $location.path(baseUrl + 'error');
              }

              return $q.reject(response);
          }
      };
}
]);