gpt4 book ai didi

javascript - Node.js 使用 Socket.io 和 Http 从 Express 读取发布数据

转载 作者:行者123 更新时间:2023-11-30 11:48:50 24 4
gpt4 key购买 nike

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

我的问题现在是下一个:我无法从请求中读取 Post 数据。

有一个请求:

            $.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

但是这个 express 是用 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))
})

关于javascript - Node.js 使用 Socket.io 和 Http 从 Express 读取发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com