我在后端使用Node.js +表达,并尝试解析简单POST请求的主体。 但是结果是服务器控制台上出现“未定义”。
我尝试了很多我在StackOverflow上找到的选项-没有任何效果。 (该版本似乎不需要body-parser。但即使包含,它也不起作用。)
下面是我的代码示例:
Node.js配置(快速版本: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
以上代码可能会更改或改进什么?
谢谢!
答案 0 :(得分:0)
默认情况下,req.body是未定义的,并且在使用诸如body-parser和multer之类的用于解析正文的中间件时填充。因此,您需要使用此中间件之一。 Express(4.x)已将主体解析器中间件与核心框架分离。因此,如果您需要主体解析器,则需要单独安装:
npm install body-parser --save
这是正文解析器的代码示例:
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 }));