http请求用html而不是json响应

时间:2016-05-13 04:37:53

标签: javascript angularjs json node.js

我已经做了一些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);
  });
}

1 个答案:

答案 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
       }));
   }]
},