0

您好,今天我有简单的代码 Nodejs 表达,可以作为 rest api 工作。当我使用邮递员将请求作为 get 方法发送时,它可以工作,如下面的代码。但我尝试在客户端使用它。它不起作用。所以你能帮忙找出错误吗?

// simple rest api 
router.get('/getuser', function(req, res, next) {
   var connection = getcon();

    res.setHeader('Content-Type', 'application/json');
    connection.query('SELECT username,password from tbuser', function (error, results, fields) {
        if (error) throw error;
        console.log('Object : ', JSON.stringify(results));
        res.send(JSON.stringify(results));
    });
    connection.end();
});

// client code 
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
  $http.get("http://localhost:3000/users/getuser")
  .then(function(response) {
      $scope.myWelcome = response.data;

  });
});
</script>
4

2 回答 2

1

您似乎在客户端脚本中提供了不正确的 URL。根据您的 nodejs 代码 URL 必须是http://localhost:3000/getuser

更新

在发送结果之前结束连接。只需connection.end()在您的回调中移动

    if (error) throw error;
    console.log('Object : ', JSON.stringify(results));
    res.send(JSON.stringify(results));
    connection.end();
});
于 2017-04-30T18:18:05.043 回答
0

您需要启用Cross-Origin Resource Sharing,一种为 Web 服务器提供跨域访问控制的机制,从而实现安全的跨域数据传输。在你的路由器之前添加这个:

    app.use(function (req, res, next) {
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
      res.setHeader('Access-Control-Allow-Headers', 'Content-type');
      res.setHeader('Access-Control-Allow-Headers', 'X-Signature');
      res.setHeader('Access-Control-Allow-Headers', 'X-Key');
      next();
    }
);
于 2017-05-01T13:21:15.847 回答