如何使用express.js将GET请求发送到本地json文件?
问题描述:
我想使用express对本地JSON文件进行GET请求。如何使用express.js将GET请求发送到本地json文件?
在我server.js我有这个
var data = {};
app.get('/src/assets/data.json', (req, res) => {
console.log(res)
res.writeHead(200, {
'Content-type': 'application/json'
});
res.end(JSON.stringify(data));
});
data.json看起来像这样
[{
"param": "one",
"param": "two",
"param": "three"
}]
而且我为GET请求的函数,而一旦被称为在DOM加载
getData() {
let xhr = new XMLHttpRequest();
xhr.open('GET', '/src/assets/data.json', true);
xhr.onreadystatechange =() => {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
console.log(xhr)
}
};
xhr.send();
}
我得到一个回应,但它是一个空对象。我猜这是因为在我的服务器文件var data = {};
是空的,但我不知道该怎么办?
答
你为什么不只是简单地发送给您请求
var data = {};
app.get('/src/assets/data.json', (req, res) => {
console.log(res)
/* Insted of doing all this */
// res.writeHead(200, {
// 'Content-type': 'application/json'
// });
// res.end(JSON.stringify(data));
/* Just send the file */
res.sendFile(path.join(__dirname, '/src/assets', 'data.json'));
});
该文件,但如果你想要做的只是作为你的代码,你需要在你的代码中包含什么是
- 阅读
data.json
文件。 - 将文件中的所有数据放入对象,即
data
变量。
读取该文件,则需要包括File System模块的Node.js的
同步:
var fs = require('fs'); /* Put it where other modules included */
var data = JSON.parse(fs.readFileSync('/src/assets/data.json', 'utf8')); /* Inside the get function */
异步:
var fs = require('fs');
var data;
fs.readFile('/src/assets/data.json', 'utf8', function (err, data) {
if (err) throw err;
data = JSON.parse(data);
});
请仔细阅读申请前的官方文档代码,也可以随时查看节点文件系统上的其他示例。
来源:Here
非常感谢。 – Allan
请考虑upvoting答案。 @allan – imvpn22