api获取请求,处理404

时间:2018-01-11 12:50:52

标签: javascript html angularjs http-status-code-404

我正在考虑处理来自api调用的404请求,当它出现时我返回html。

$http.get('/api/house/' + $routeParams.id)
   .then(function (res) {

    $scope.houses = res.data;

}, function (err) {

    //when not found I am binding html from response
    if(err.status == 404){  
        $scope.errHtml = $sce.trustAsHtml(err.data);
    }

});

为404返回了html:

<!doctype html>
<html>
<head>

   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="stylesheet" type="text/css" href="/resources/css/bootstrap.min.css">

   <title>404</title>

</head>
<body>

    <div>test 404</div>

</body>
</html>

在视图中我有:

<div ng-bind-html="errHtml"></div>

我试图了解这是否是从角度js中的api调用处理404的最佳方法

1 个答案:

答案 0 :(得分:1)


  处理angularjs中的错误响应的最佳方法是编写$http interceptor。只需编写一个拦截器服务并将其推送到$httpProvider拦截器,然后您就可以在一个地方处理所有错误。
请参阅文档here 代码看起来像是

.factory('httpRequestInterceptor', function ($q, $location) {
    return {
        'responseError': function(rejection) {
            if(rejection.status === 404){
                $location.path('/404/');                    
             }
            return $q.reject(rejection);
         }
     };
});

然后,您可以将此服务注入配置块
中的interceptor

.config( function ($httpProvider) {
    $httpProvider.interceptors.push('httpRequestInterceptor');
});


您也可以在此处理其他错误代码并相应地重定向。希望这会有所帮助。