Node.js使用Socket.io和Http从Express读取数据

我有一个与Express和Socket.io node.js服务器。 在Socket.io文档中,我find了这个主机服务器的示例代码。

我的问题现在是下一个:我不能读取请求中的发布数据。

有一个要求:

$.ajax({ type: "POST", url: "http://127.0.0.1:4444/login", data: { da: 'a' }, contentType: "application/json; charset=utf-8", dataType: "json", success: function(data){ console.log(data); }, failure: function(errMsg) { console.log(data); } }); 

这是服务器:

 var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(4444); var database = require('./database.js'); database.methods.connect(); // Add headers app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); res.setHeader('Access-Control-Allow-Credentials', true); next(); }); app.post('/login', function(req, res) { console.log(req.body); }); 

我尝试了很多想法。 例如:bodyParser.json(),bodyParser.urlencoded

但是这个expression式是用require(“http”)运行的。

我如何从请求中读取身体? 我希望有一个人可以帮助我! 谢谢

您需要添加Express身体分析器中间件,如下所示:

 var express = require('express') var bodyParser = require('body-parser') var app = express() var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(4444); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json()) app.use(function (req, res) { res.setHeader('Content-Type', 'text/plain') res.write('you posted:\n') res.end(JSON.stringify(req.body, null, 2)) }) 

你必须使用body-parser来expression。 文档在这里

 var bodyParser = require('body-parser') app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })) 

chrome.exe –user-data-dir =“C:/ Chrome开发会话”–disable-web-security