我是新来的,正在学习 Express,虽然我认为我走在正确的轨道上,但我目前在
POST
方法上遇到了一些问题。我现在发生的事情如下:
当我向 http 文件发送
POST
请求时,我收到一个空对象 {}
。另外,我已经通过 Thunder 客户端进行了测试,但是,我收到了 400 错误或另一个 http 错误,
不起作用
Content-Type: application/json
位于http文件中方法中的路径下方,
GET
方法效果很好,
这是我一直在使用的代码:
const express = require('express');
const { stories } = require('../data/books.js').infoBooks;
const routerStories = express.Router();
routerStories.use(express.json());
routerStories.post('/', (req, res) => {
const newBook = req.body;
stories.push(newBook);
res.send(JSON.stringify(stories));
});
我已经尝试解决这个问题好几天了。虽然我做了很多研究,但我还没有弄清楚。 请,我非常感谢您的观点和经验,以便能够完成解决此情况。
我发现您的代码有一些问题。我假设您按原样粘贴了代码,因此您需要更改以下内容。
1.) 我不认为这里的这一行是有效的 javascript,或者它是否有点奇怪。
const { stories } = require('../data/books.js').infoBooks;
如果 infoBooks
是包含故事的对象,只需导入该对象
2.)您不需要将路由器设置为 json,因为该方法默认存在于路由器上,并且会接受 json 作为有效响应
3.)您可能没有使用不同的路由名称,而另一个路由正在使用相同的字符串文字。
您没有提供足够的信息,因此您如何使用路由器本身可能存在另一个问题,但从您发布的内容来看,这些都是我发现的所有问题。希望有帮助!
import {infoBooks} from "../data/books.js"
import express from "express";
const router = express.Router();
routerStories.post('/createNewBook', (req, res) =\> {
const newBook = req.body;
if(!newBook){
res.status(400).json({message: "invalid arguments"})
return
}
infoBooks.stories.push(newBook);
//we don't need to set status here because by default the response will be 200
res.json({infoBooks.stories});
return
})