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

问题描述:

我发送文件名到服务器,并试图得到某种形式的响应,以确保API调用正在工作,但其始终回响404即使路径是正确的,我不知道我在哪里犯错,任何想法?如何使用angularjs从服务器检索响应?

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); 

}); 
+0

您是否尝试在网址末尾添加正斜杠'/' – bhzag

你的服务器上的路线是不正确的比较,从角的边通话。您没有使用路由参数,而是查询字符串。

试试这个:

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

或者你可以试试这个角度上,并保持服务器代码:

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

有没有办法在传递参数时传递参数? – hussain

+0

@hussain更新了我的答案 – phnkha

+0

我不知道文件名传递为/test.txt,我不知道为什么 – hussain

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

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'); 
}); 
+0

我更新了我的服务器代码,以便您更好地理解我正在尝试执行的操作。 – hussain

+0

您可以确认您没有添加此中间件app.get('/ file',function(req,res){get filename使用:req.query.file_name res.send('FIle data'); });最后在app.js –

+0

它应该在上面://捕获404并转发到错误处理程序 app.use(函数(req,res,next){var_error = new Error('Not Found'); err.status = 404; next(err); }); '需要检查你的app.js –