如何在Node.js中处理POST数据?

如何form[method="post"]Node.js中的HTTP POST方法提取表单数据()和文件上传

我已经阅读了文档,谷歌搜索并没有发现任何东西。

function (request, response) {
    //request.post????
}

有图书馆还是黑客?

蛋蛋伽罗猿2020/03/16 11:30:22

如果希望表单数据在req.body中可用,则需要使用bodyParser()。body-parser解析您的请求,并将其转换为一种格式,您可以从中轻松提取可能需要的相关信息。

例如,假设您在前端有一个注册表单。您正在填充它,并请求服务器将详细信息保存在某处。

如果使用body-parser,从请求中提取用户名和密码将变得非常简单。

……………………………………………………。

var loginDetails = {

username : request.body.username,

password : request.body.password

};
小哥小卤蛋2020/03/16 11:30:22

限制POST大小,避免淹没您的节点应用程序。有一个很棒的原始模块,适用于快速连接和连接,可以帮助您通过大小和长度来限制请求。

西门逆天2020/03/16 11:30:22

快递v4.17.0

app.use(express.urlencoded( {extended: true} ))
神奇神奇Near2020/03/16 11:30:22

而且,如果您不想使用Express等整个框架,但还需要其他形式的表单,包括上载,那么福尔马林可能是一个不错的选择。

它在Node.js模块中列出

宝儿樱2020/03/16 11:30:22

如果您不想将数据与data回调一起分块,则可以始终使用如下readable回调:

// Read Body when Available
request.on("readable", function(){
  request.body = '';
  while (null !== (request.body += request.read())){}
});

// Do something with it
request.on("end", function(){
  request.body //-> POST Parameters as String
});

这种方法修改了传入的请求,但是一旦您完成响应,该请求就会被垃圾回收,因此这不会成为问题。

如果您担心身材庞大,则一种高级方法是首先检查身体大小。

GreenTom2020/03/16 11:30:22

有多种方法可以做到这一点。但是,我知道最快的方法是将Express.js库与body-parser一起使用。

var express = require("express");
var bodyParser = require("body-parser");
var app = express();

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

app.post("/pathpostdataissentto", function(request, response) {
  console.log(request.body);
  //Or
  console.log(request.body.fieldName);
});

app.listen(8080);

这可以用于字符串,但是如果POST数据包含JSON数组,则可以将bodyParser.urlencoded更改为bodyParser.json。

更多信息:http : //www.kompulsa.com/how-to-accept-and-parse-post-requests-in-node-js/

Gil小哥2020/03/16 11:30:22

如果使用Express.js,则必须先添加中间件bodyParser,然后才能访问req.body:

app.use(express.bodyParser());

那你可以要求

req.body.user
达蒙阳光2020/03/16 11:30:21

如果您使用node-formidable,可以按照以下方法进行操作

var formidable = require("formidable");

var form = new formidable.IncomingForm();
form.parse(request, function (err, fields) {
    console.log(fields.parameter1);
    console.log(fields.parameter2);
    // ...
});