ExpressJS Router POST方法无法正常工作问题求助
解决Express中POST方法失效的问题
问题核心
Express默认不会自动解析POST请求的请求体,这会导致服务器无法正确处理POST请求,出现无响应或响应异常的情况。
修复自定义app.js代码
在挂载路由之前添加请求体解析中间件,修改后的代码如下:
const app = express() const router = express.Router(); const port = 3000 // 新增:解析POST请求体的中间件 app.use(express.json()); // 处理JSON格式请求体 app.use(express.urlencoded({ extended: true })); // 处理表单格式请求体 app.use('/qbiit', router); router.route('/on') .post((req, res) => { res.send('POST') }) app.get('/', (req, res) => { res.send('HOME') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
express.json():用于解析Content-Type为application/json的请求express.urlencoded({ extended: true }):用于解析Content-Type为application/x-www-form-urlencoded的表单请求,extended: true支持嵌套的表单数据
修复express-generator生成的项目
- 打开项目根目录的
app.js文件 - 确保以下两行中间件代码存在且未被注释:
app.use(express.json()); app.use(express.urlencoded({ extended: false }));
- 检查路由文件(如
routes目录下的文件)中的POST路由路径是否正确匹配请求地址
验证修复效果
重启Express服务器后,使用Postman、curl或前端表单发送POST请求到http://localhost:3000/qbiit/on,此时应该能正常收到"POST"响应。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

