gpt4 book ai didi

node.js - 清空请求正文

转载 作者:搜寻专家 更新时间:2023-10-31 23:34:18 24 4
gpt4 key购买 nike

我生成了两个项目,一个使用 create-react-app,另一个使用 express generator。

我在 localhost:3000 上运行第一个,在 localhost:3001 上运行第二个。

我正在尝试发送一个 POST 请求,但我收到一个空的 req.body

客户端:

 handleSubmit(event) {
event.preventDefault();
var data = new FormData();
for (const key of Object.keys(this.state)) {
data.append(key, this.state[key]);
}

const url = "http://localhost:3000/course";
fetch(url, {
method: "POST",
body: this.state
})
.then(response => response.text())
.then(html => console.log(html));
}

服务器端:

app.js

app.use(logger("dev"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
next();
});
app.use("/course", course);

router/course.js

router.post("/", function(req, res) {
if (!req.body) {
var course = new Course(req.body);
course
.save()
.then(item => {
res.json({ course: item });
})
.catch(err => {
res.status(500).send("Unable to save to database");
});
}
res.status(200).send("No data to save");
});

最佳答案

body-parser 需要将 Content-Type header 设置为 'Content-Type': 'application/json' 以便知道是要解析body

尝试将其传递给 header

fetch('http://localhost:3000/course', {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});

关于node.js - 清空请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com