api 获取请求,处理 404

api get request, handle 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);
    }

});

返回 html 404:

<!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>

我想了解这是否是处理 api 调用 angular js

中的 404 的最佳方法


在 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');
});


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