如何使用express.js获取JSON文件?我希望能够在我的Mac终端中访问它。我正在完成一项大学任务,要求我编写一个充当简单数据存储的HTTP服务器。它必须响应GET,PUT,POST和DELETE请求。我必须使用express.js代替fs这个应用程序。
到目前为止,在我的根目录中,我有一个server.js文件,我有一个名为lib的子目录,它包含另一个名为notes的子目录。 Notes是JSON文件所在的位置。
在我的根目录中,我有一个server.js文件。这就是我到目前为止所做的一切:
'use strict'
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var notes = './lib/notes';
app.use(bodyParser.json());
app.get('/', function(req, res) {
//
//this is the part I need help with
//
}
var port = process.env.PORT || 3000;
app.listen(port, function() {
console.log('Server started on port ' + port;
});
一旦我的GET请求正常工作,我的Mac终端就可以发送GET请求并接收notes目录中的所有JSON文件。
答案 0 :(得分:7)
...从我的Mac终端我应该能够发送GET请求 接收notes目录中的所有JSON文件。
如果你不想使用fs
模块(你也不需要),
您只需为GET请求设置路由并发送json文件以响应app.sendFile()
app.get('/',function(req,res){
res.sendFile(path.normalize(__dirname + '/foo.json'))
//assuming your app.js and json file are at same level.
//You may change this to 'lib/notes/foo.json' to fit you case
})
path
是require()
所需的模块。
__dirname
是当前正在执行的脚本所在的目录。
最后 foo.json 是包含你的json
的文件{
"name":"nalin",
"origin":"stackoverflow"
}
以下是 app.js
的完整代码var express = require('express');
var path = require('path');
var app = express();
app.get('/',function(req,res){
res.sendFile(path.normalize(__dirname + '/foo.json'))
})
app.listen(3000);
这将帮助您使用node app.js
运行节点服务器。
最后,您可以通过
访问jsonhttp://localhost:3000/
curl
curl localhost:3000
命令
希望这有帮助。
答案 1 :(得分:0)
您可以将.json文件作为静态文件提供:
app.use('/notes', express.static( notes ));
http://expressjs.com/starter/static-files.html
或者你可以手动宽度路径模式:
app.get('/notes/:file', function(req, res) {
fs.readFile(notes + "/" + req.params.file, function(err, data) {
if(err) {
res.status(404).send('Not found');
} else {
res.contentType(req.params.file);
res.send(data);
}
res.end();
});
});