express中怎么获得前端post过来的数据?

发布于 2022-09-06 02:48:10 字数 569 浏览 12 评论 0

发现一个神奇的东西。
在vue项目中的dev-server.js中写了一个

var data_router = express.Router()
data_router.post('/register',function(req,res){
  console.log('succeed register')
})
...

结果这个console.log()的结果返回到了我的编译器webstorm的底端栏里了,就像是python的print()一样,这是怎么做到的,为什么会显示在这里,好神奇
图片描述


然后我想问就

data_router.post('/register',function(req,res){
    //怎么在这里获得前端Post过来的数据?
})

就在回调函数里面怎么获得post过来的数据(注释位置↑)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

任谁 2022-09-13 02:48:10

以下代码仅供参考啊。

data_router.post('/register',function(req,res){
    var data;
    req.on('data', function(chunk) {  data += chunk; }
    req.on('end', function() {
        console.log(data);
    });
})

req 代表客户端的 HTTP 请求,req 是一个流,用流的方式可以读取请求主体中的数据。

机场等船 2022-09-13 02:48:10

常见方式使用body-parser中间件

安装

npm install --save body-parser

使用


const express = require('express'),
      bodyParser = require('body-parser'),
      app = express();

app.use(bodyParser.urlencoded({extended:false}));

app.use('/').post(
    (req,res)=>{
        res.send(req.body) // 请求对象中的body 即为Post数据 更为详尽的方法 阅读官方文档
    }
);

app.listen(8080);

当然 也可以实现自己的post数据中间件

简化实现代码如下:

app.use((req,res,next) => {
    let data = '';
    req.on('data', chunk => {
        data += chunk;
    });
    req.on('end',()=>{
        req.body = data;
        next();
    })
});

上述代码替换body-parser 即是自己的中间件

另外,你调试台打印的,出现webstorm中是因为webstorm有内置的命令行工具,你可以在这个工具里进行常规的命令行操作。

一笔一画续写前缘 2022-09-13 02:48:10

nodejs 中 有一个 process 的全局变量 ,对应的有 stdout 标准输出 stdin 标准输入, 还有什么貌似是 错误输出 stderr, 这里的 console.log 其实调用的是

Console.prototype.log = (...params)=> process.stdout.write( ...params )

所以就在控制台打印了,和浏览器的那个有点差别.

第二个问题
express 中 大牛们已经帮我们封装的很好了,request,response,next 三个参数,req.body 就拿到了
他实际接受到是个 buffer

const chunks = []
let len = 0
data.on("data",(chunk)=>{
    chunks.push(chunk)
    size+=chunk.length
})
data.on('end',()=>{
    const buf = Buffer.concat(chunks,size)
    console.log(buf.toString());
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文