javascript - Node.js 上的 POST 方法不适用于使用 express 的 Replit 服务器
问题描述
我是后端新手,我在 Replit 服务器中使用 Node.js 和 express 来部署文件应用程序:
但是,当我尝试执行帖子时,什么也没有发生!
var express = require('express');
var fs = require('fs');
const bodyParser = require('body-parser');
var app = express();
// Middlewares
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/foo.json', function (req, res) {
console.log("It doesn't work!");
});
我想做的就是通过 express 的 POST 方法将从 index.html 收集的数据保存到 .json 中(我不确定这是不是最好的方法)。我能做些什么?
解决方案
上面的代码不是用来发出请求的
app.post('/foo.json', function (req, res) {
console.log("It does not work");
});
这意味着您正在接受请求http://your_url/foo.json
它是一个端点。
对于您要执行的操作,您必须使用xhr
或类似的库从前端发出请求axios
# Axios CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.1/axios.min.js" integrity="sha512-bZS47S7sPOxkjU/4Bt0zrhEtWx0y0CRkhEp8IckzK+ltifIIE9EMIMTuT/mEzoIMewUINruDBIR/jJnbguonqQ==" crossorigin="anonymous"></script>
axios.post('http://localhost:3002/foo', {
data: 'your_data_goes_here'
})
您的后端代码应该是
const express = require('express');
const fs = require('fs');
const bodyParser = require('body-parser');
const app = express();
const PORT = 3002;
// Middlewares
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/foo', (req, res) => {
console.log(req.body.data);
});
app.all('*', (req, res, next) => {
// CORS
res.setHeader('Access-Control-Allow-Origin', '*');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET','POST', 'OPTIONS');
next();
});
// Start the app
app.listen(PORT, () => {
console.log(`Server is listening on port ${PORT}`);
});