服务器无法接收Post请求,Postman提示无法获取响应如何解决?
问题排查与修复
你的代码存在两个核心问题,直接导致了请求超时无响应:
1. bodyParser 中间件未正确初始化
在server.js中,你写的是:
app.use(bodyParser.json);
这里的bodyParser.json是函数本身,必须调用它才能返回可用的中间件函数,正确写法是:
app.use(bodyParser.json());
如果不调用该方法,Express无法解析请求体,请求会一直卡在处理流程中,无法进入后续路由逻辑。
2. /verify 路由未返回响应
在Auth.js的/verify路由里,你仅打印了req.body,但没有向客户端发送任何响应:
router.post('/verify', (req, res) => { console.log(req.body) })
HTTP协议要求每个请求必须对应一个响应,否则客户端会一直等待直到超时。你需要添加响应语句,比如:
router.post('/verify', (req, res) => { console.log(req.body); // 返回JSON格式响应 res.json({ received: req.body }); // 或者简单返回状态码与提示 // res.status(200).send('请求已接收'); })
修改后的完整代码示例
server.js
const express = require('express') const port = 3000 const app = express(); const bodyParser = require('body-parser'); require('./db'); require('./Models/user'); const Authroutes = require('./routes/Auth'); // 修正bodyParser调用方式 app.use(bodyParser.json()); app.use(Authroutes); app.get('/', (req, res) => { res.send('Hello World') }) app.listen(port, () => { console.log('server is running at 3000!'); })
Auth.js
const express = require('express'); const router = express.Router(); const mongoose = require('mongoose'); const User = mongoose.model('User'); const jwt = require("jsonwebtoken"); require('dotenv').config(); const nodemailer = require("nodemailer"); router.post('/verify', (req, res) => { console.log(req.body); // 添加响应逻辑 res.status(200).json({ message: "请求接收成功", data: req.body }); }) module.exports = router;
修改完成后重启服务器,再用Postman测试,请求即可正常收到响应。
内容的提问来源于stack exchange,提问作者user20731273
相关产品推荐
相关产品推荐

