Node.js + Express POST 请求返回未定义
Posted
技术标签:
【中文标题】Node.js + Express POST 请求返回未定义【英文标题】:Node.js + Express POST request returns undefined 【发布时间】:2021-01-05 08:36:45 【问题描述】:我在后端有 Node.js + express 并尝试解析简单 POST 请求的正文。 但结果是在服务器控制台上得到“未定义”。
我尝试了很多我在 *** 上找到的选项 - 没有任何效果。 (似乎版本中不需要 body-parser。但它不起作用即使包含)。
以下是我的代码示例:
Node.js 配置(Express 版本:express@4.17.1):
var express = require('express');
var app = express();
const path = require('path');
const PORT = process.env.PORT || 5000;
let ejs = require('ejs');
app.use(express.json());
app.use(express.text());
/* ... Some code ... */
Node.js 路由:
.use(express.static(path.join(__dirname, 'public')))
.set('view engine', 'ejs')
.post('/gaapi-post', function(req, res)
console.log('***** Post fields: ******');
console.log(req.body);
)
POST 请求示例:
// jQuery JSON
jQuery.ajax(
url: '/gaapi-post',
type: 'POST',
contentType: 'application/json',
data: "x": "5", "y": "6" , // Valid JSOP should have " instead of '
);
// jQuery simple text
$.post( "/gaapi-post", 'test');
// Curl in console
curl -H "Content-Type: application/json" -X POST -d '"username":"xyz","password":"xyz"' http://localhost:5000/gaapi-post
上面的代码有什么可以改变或改进的?
提前致谢!
【问题讨论】:
【参考方案1】:默认情况下,req.body 是未定义的,并且在您使用 body-parser 和 multer 等正文解析中间件时填充。所以你需要使用这个中间件之一。 Express (4.x) 已将 body-parser 中间件从核心框架中分离出来。所以,如果你需要body-parser,你需要单独安装:
npm install body-parser --save
这是body-parser的代码示例:
const app = require('express')();
const bodyParser = require('body-parser');
// for parsing application/json
app.use(bodyParser.json());
// for parsing application/x-www-form-urlencoded
app.use(bodyParser.urlencoded( extended: true ));
【讨论】:
以上是关于Node.js + Express POST 请求返回未定义的主要内容,如果未能解决你的问题,请参考以下文章
如何从 node.js Express 发送 POST 请求?
如何在 express node.js POST 请求中接收 JSON?
如何发送 POST 请求以响应 node.js Express?
使用颤振客户端向 node.js express api 发出 post 请求