在Angular中返回404

时间:2015-11-30 08:24:54

标签: angularjs model-view-controller http-status-code-404

当您访问不存在的页面时,我熟悉将404作为HTTP状态代码返回。当您构建静态网站时,它运行良好并且有意义,但在Angular中它是不同的。

假设我访问/blah并且它不在我的路线列表中 - 然后我重定向到/not-found。但是,假设我访问了/stuff/123之类的有效网址,但我的后端中不存在对象Stuff123。我应该手动在我的手机中进行重定向 StuffController$location.path('/not-found')

这是我的配置:

app.config(['$routeProvider', function ($routeProvider) {
  $routeProvider
    .when('/stuff/:id', {
        templateUrl: '/views/stuff.html',
        controller: 'StuffController'
    })
    .when('/not-found', {
        templateUrl: '/views/not-found.html'
    })
    .otherwise({
        redirectTo: '/not-found'
    });
});

另外,在Angular中返回404是否有意义?如果是这样,那我该怎么做?

2 个答案:

答案 0 :(得分:1)

  

我是否应该使用$ location.path(' / not-found')在我的StuffController中手动重定向?

我不会重定向到未找到的路线。如果对象Stuff123不存在,它仍然不意味着找不到路由。找到 ,只是没有这个特定参数的数据。你应该只显示正确的相应信息。

或者想一想。找不到404状态码。它是错误代码。但是,您所描述的不是错误情况,只是缺少此ID的数据。因此,在经典应用程序中,您应该是SUCCESS 200,只有空响应[]用于数据。所以,它没有"没有找到"。

答案 1 :(得分:0)

我知道这有点旧,但我通过寻找404和角度很容易找到它......

我认为当你使用'catch all'路线时,你想做什么。捕获所有路线是'**'。所以在你的app模块中添加这样的东西......

        },
        {
            path: 'admin/orders',
            component: AdminOrdersComponent,
            canActivate: [AuthGuard, AdminAuthGuard]
        },
        { path: '**', component: CatchAllComponent }

这种方式在模板中,您可以为用户提供有用的信息,无论他们在发生错误后放入地址栏的内容是什么。