我已经做了一些vimeo api调用来获取视频,但是当我在服务器上执行get请求时,它会响应该路径上的html而不是来自服务器的数据。我也使用angular-client-side-auth(https://github.com/fnakstad/angular-client-side-auth)。我对此很陌生,所以我很难理解为什么会这样。
server.js
app.get('/api/mostviewed', function (req, res) {
MostViewed.find({}, { _id: 0, iframe: 1 }, function (err, docs) {
res.json(docs);
});
});
在客户端 - 身份验证的routes.js中有这个,这会导致一切(此文件位于服务器端):
{
path: '/*',
httpMethod: 'GET',
middleware: [function(req, res) {
var role = userRoles.public, username = '';
if(req.user) {
role = req.user.role;
username = req.user.username;
}
res.cookie('user', JSON.stringify({
'username': username,
'role': role
}));
res.render('index');
}]
}
我该如何解决这个问题?我想保持路径:' / *',或者在保持功能相似的同时更改它,这样我就可以从服务器获取数据了。或者有不同的方法来解决这个问题吗?
编辑: 溶液
{
path: '/api/mostviewed',
httpMethod: 'GET',
middleware: [Video.getmostviewed]
},
在Video.js里面我做了这个:
getmostviewed: function(req,res){
MostViewed.find({}, { _id: 0, iframe: 1 }, function (err, docs) {
res.json(docs);
});
}
答案 0 :(得分:1)
在您的情况下,客户找不到与/api/mostviewed
相对应的逻辑,从而达到/*
并显示html
而不是json
。
可能的解决方案
在/*
{
path: '/api/*',
httpMethod: 'GET',
middleware: [function(req, res) { // sample middleware logic
var role = userRoles.public, username = '';
if(req.user) {
role = req.user.role;
username = req.user.username;
}
res.cookie('user', JSON.stringify({
'username': username,
'role': role
}));
}]
},