如何使用express.js将GET请求发送到本地json文件?

如何使用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')); 
}); 

该文件,但如果你想要做的只是作为你的代码,你需要在你的代码中包含什么是

  1. 阅读data.json文件。
  2. 将文件中的所有数据放入对象,即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

+0

非常感谢。 – Allan

+0

请考虑upvoting答案。 @allan – imvpn22