【发布时间】:2014-06-04 08:34:14
【问题描述】:
我已经启动了一个使用 Express 4.0 服务器的应用程序。我已经根据 scotch.io (http://scotch.io/tutorials/javascript/build-a-restful-api-using-node-and-express-4) 上的教程设置了路线,构建了一个后端 api 来服务于前端 SPA (angularjs)。这是后端路由器的摘录:
router.route('/users')
.get(function (req, res) {
User.find(function(err, users) {
if (err) {
res.send(err);
}
else {
res.json(users);
}
});
})
再往下
// home page route (http://localhost:8080)
router.get('/', function(req, res) {
res.send('API ROOT');
});
app.use('/api', router);
从前端我只使用 get 从 api 获取用户:
$http.get('/api/users')
.success(function(data) {
$scope.users = data;
});
角度路线是这样设置的:
.when('/', {
templateUrl: 'views/home.html',
controller: 'MainController'
})
.when('/users', {
templateUrl: 'views/user.html',
controller: 'UserController'
})
index.html 有一个指向 /users 的链接。
启动服务器并进入 localhost:8080 时加载正常,单击用户加载 user.html 视图并列出用户。
但是,如果我在浏览器位于 localhost:8080/users 时单击刷新
我明白了:
Cannot get /users
是控制器问题吗? 还是后端路由有问题?
非常欢迎任何反馈/建议!
再搜索一些,我发现有几种解决方案可以解决这个问题: 在前端(角度路线部分)将其添加到末尾:
// >>> redirect other routes to
otherwise({
redirectTo: '/'
});
或在后端(在所有路线之后):
app.get('*', function(req, res){
res.render('index.html');
});
哪种解决方案更好(或者建议同时使用...?)
【问题讨论】:
-
这实际上是未解决的问题。试试this
标签: javascript node.js angularjs express