我正在尝试通过将文件作为json字符串传递到ExpressJS POST来写文件:
app.post('/filewrite/', (req, res) => {
const fs = require('fs');
console.log(req.body);
fs.writeFile("./db/test.json", req.body, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
});
但是当我尝试通过时,它会显示404:
POST http://localhost:5000/filewrite/%7B%22db%22:[%7B%22ID%22:%2211111111%22,%22job%22:%2222222222]%7D 404 (Not Found)
我需要如何定义POST路由以接受参数?
答案 0 :(得分:0)
如果您希望数据显示在req.body
中,则需要在请求的正文中传递数据,而不是在URL中传递。
由于您试图在URL中传递它,因此路由不匹配。
我不知道POST
代表什么软件,但是要使用cURL做到这一点,您将:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"db":[{"ID":11111111,"job":22222222]}' \
http://localhost:5000/filewrite/
答案 1 :(得分:-1)
您不应该在参数中传递数据,但是如果您愿意,可以按照以下方法进行操作
app.post('/filewrite/:data', (req, res) => {
const fs = require('fs');
console.log(req.body);
fs.writeFile("./db/test.json", req.params.data, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
});
此外,您无法通过服务器将数据写入本地文件,您将必须为文件夹或文件Save post data in local file
设置静态路径。