使用 body-parser 表达 4.13 空白 json 请求
Express 4.13 blank json request with body-parser
我有一个使用以下参数和路由的快速服务器
var express = require('express');
var bodyParser = require('body-parser');
var router = express.Router();
var app = express();
app.use(router);
app.use(bodyParser.urlencoded());
var jsonParser = bodyParser.json({ type: 'application/json'});
router.post('/login', jsonParser, function(req, res) {
console.log('request body : ' + req.body);
});
我的ajax回调如下
var user = {
username: $("#_username").val(),
password: $("#_password").val()
}
var jsonText = JSON.stringify(user);
console.log(jsonText);
$.ajax({
type: "POST",
url: "http://localhost:3002/login",
async: true,
dataType: 'json',
data: jsonText,
cache: false,
success: function(data, textStatus, xhr) {
},
error: function(xhr, textStatus, errorThrown) {
}
});
我不明白为什么我在正文类型中只得到一个空数组,并且几乎完全遵循了 npm 上的正文解析器示例。
知道它为什么这样做吗?
谢谢!
根据 the docs:
,您还没有创建 application/json
解析器的实例
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// create application/json parser
var jsonParser = bodyParser.json()
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
这行代码更改了接受的 "types",json 解析器愿意接受 - 您正在更改设置(如果您有一些自定义 json 对象) :
var jsonParser = bodyParser.json({ type: 'application/json'});
验证您的 post 请求是否正在触发也很好...
router.post('/login', jsonParser, function(req, res) {
console.log("posted!");
}
我有一个使用以下参数和路由的快速服务器
var express = require('express');
var bodyParser = require('body-parser');
var router = express.Router();
var app = express();
app.use(router);
app.use(bodyParser.urlencoded());
var jsonParser = bodyParser.json({ type: 'application/json'});
router.post('/login', jsonParser, function(req, res) {
console.log('request body : ' + req.body);
});
我的ajax回调如下
var user = {
username: $("#_username").val(),
password: $("#_password").val()
}
var jsonText = JSON.stringify(user);
console.log(jsonText);
$.ajax({
type: "POST",
url: "http://localhost:3002/login",
async: true,
dataType: 'json',
data: jsonText,
cache: false,
success: function(data, textStatus, xhr) {
},
error: function(xhr, textStatus, errorThrown) {
}
});
我不明白为什么我在正文类型中只得到一个空数组,并且几乎完全遵循了 npm 上的正文解析器示例。
知道它为什么这样做吗?
谢谢!
根据 the docs:
,您还没有创建application/json
解析器的实例
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// create application/json parser
var jsonParser = bodyParser.json()
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
这行代码更改了接受的 "types",json 解析器愿意接受 - 您正在更改设置(如果您有一些自定义 json 对象) :
var jsonParser = bodyParser.json({ type: 'application/json'});
验证您的 post 请求是否正在触发也很好...
router.post('/login', jsonParser, function(req, res) {
console.log("posted!");
}