如何使用angularjs从服务器检索响应?

时间:2016-06-30 19:02:29

标签: angularjs node.js

我正在向服务器发送文件名并试图获得某种响应,以确保api调用正在工作,但即使路径正确,它也总是在退回404,我不知道我在哪里犯错,不知道吗?

angularjsFactory.js

getFile:function(file_name){
            return $http.get("/file?file_name="+file_name);
        }

server.js

var express = require('express');
var app = express();
var fs = require('fs');
app.use(express.static(__dirname + "/public"));
var readDirectory = require('./readDirectory');

app.get('/file', function(req, res) {
    var path = './ditLogs';
    var fileParam = req.query.file_name;
    console.log(fileParam);
    fs.readdir(path, function(err, items) {
        items.forEach(function(items) {
            if (fileParam === items) {
                res.sendFile(items);
                console.log(items);
            }
        });
    });
});
app.listen(3000, function() {
    console.log('Example app listening on port 3000!');
    //console.log('app is printing data',obj);
    //ditProducer.startProducer();
    setTimeout(function() {
        ditconsumer.start();
    }, 2000);

});

2 个答案:

答案 0 :(得分:1)

与来自角度方的呼叫相比,您在服务器上的路线不正确。您没有使用路由参数,而是使用查询字符串。

试试这个:

app.get('/file', function (req, res) {
    // get filename using: req.query.file_name
    res.send('FIle data');
 });

或者您可以在角度上尝试此操作并保留服务器代码:

 $http.get("/file/"+ encodeURI(file_name));

答案 1 :(得分:0)

服务器端代码看起来不正确。

app.get('/file', function (req, res) {
    console.log(req.query.file_name);//This will give you filename passed as url param
    res.send('FIle data');
 });