当您访问不存在的页面时,我熟悉将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是否有意义?如果是这样,那我该怎么做?
答案 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 }
这种方式在模板中,您可以为用户提供有用的信息,无论他们在发生错误后放入地址栏的内容是什么。