gpt4 book ai didi

node.js - 在平均堆栈应用程序中,req.body 为空

转载 作者:太空宇宙 更新时间:2023-11-03 21:52:59 24 4
gpt4 key购买 nike

我正在尝试使用 Node、Express 和 Angular 制作一个投票应用程序。他们在前端提交一个表单,然后通过 http post 请求将其发送到后端。当它最终到达正确的路线时,我记录 req.body 并且它是空的。

我在网上读到的所有内容都说我可能搞乱了我的 body 解析器中间件,所以我已经搞乱了一段时间,但到目前为止没有任何效果。任何帮助将非常感激。

这是我在前端的帖子:

    addVote(vote: Vote){
const body = JSON.stringify(vote);
const headers = new Headers({'Content-Type': 'application/json'});
console.log(body);
const token = localStorage.getItem('token')
? '?token=' + localStorage.getItem('token')
: '';
return this.http.post('http://localhost:8080/poll' + token, body, {headers})
.map((response: Response) => {
const result = response.json();
const vote = new Vote(result.obj.os, 1);
console.log(result)
return vote;
})
.catch((error: Response) => console.error(error))
}

我的中间件是这样的:

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS');
next();
});

后端路由在这里:

app.use('/poll', pollRoutes);

这里:

router.post('/', function (req, res, next) {
console.log(req.body)
}

P.S.:我前端的 console.log(body) 读取的是 {"os":"MacOS","points":1},这就是我想要到达后端的内容。提前致谢!

P.S.S.:我把显示到控制台的 {"os":"MacOS","points":1} 并在 postman 中输入它,它工作得很好,所以这一定是我的 Angular 代码的问题.

最佳答案

有两个问题

(i) 您需要在请求 header 下添加 token

(ii) 在 Node.js 快速路由配置中,您应该有一个使用 url '/poll' 定义的路由器

router.post('/poll', function(req, res) {

关于node.js - 在平均堆栈应用程序中,req.body 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48593409/

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