【转】nodejs获取post请求发送的formData数据

摘要:
当前端post请求发送formData的类型数据时,服务器需要引入中间件主体解析器。主要原因是post请求发送的数据在http主体中,因此需要对其进行解析,否则无法获取数据(数据为空)注意:对于RequestPayload的使用(在“流”模式下传输数据时,不要使用此中间件),即使前端浏览器可以看到数据(如下图所示)已发送且请求成功,状态==200;前代码:letfo

前端post请求发送formData的类型数据时,需要服务端引入中间件body-parser,主要原因是post请求发送的数据,是在http的body里面,所以需要进行解析,否则获取不到数据(数据为空)

注意:对于使用Requst Payload(以“流“的方式传递数据时,不要要这个中间件)

即便是前端浏览器能够看到数据(如下图所示)已发送并且请求成功,status==200;

【转】nodejs获取post请求发送的formData数据第1张

 前端代码:

复制代码
  let forms= new FormData();
    forms.append('uname','test');
    forms.append('psd',123456);
    forms.append('age','22');   
   let xhr = new XMLHttpRequest();    
   xhr.onreadystatechange = function(){
   if(xhr.readyState==4){
       if(xhr.status>=200&&xhr.status<=300||xhr.status==304){
             console.log(xhr.response)
       }
       }else{
           console.log(xhr.status)
       }
   }
   xhr.open('POST','http://localhost:99/formdata',true);
   xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  //formdata数据请求头需设置为application/x-www-form-urlencoded
console.log(forms);
xhr.send(forms);
复制代码

后端node.js代码:

复制代码
let express = require('express');
let app = express();

const bodyParser = require('body-parser');
app.use(bodyParser.json());//数据JSON类型
app.use(bodyParser.urlencoded({ extended: false }));//解析post请求数据

app.all('*',function(req,res,next){  
 let origin=req.headers.origin;
   res.setHeader('Access-Control-Allow-Origin',"*");
   res.setHeader('Access-Control-Allow-Headers','Content-Type');
    next();
})

app.post('/formdata',function(req,res){  
    console.log(req.body);    
    res.send('POST发送成功了')
})

app.listen(99);
复制代码

其中三行代码很关键:

const bodyParser = require('body-parser');
app.use(bodyParser.json());//数据JSON类型
app.use(bodyParser.urlencoded({ extended: false }));//解析post请求数据

加入这三行代码,既可以在req.body内打印出前端请求的formdata数据

【转】nodejs获取post请求发送的formData数据第6张

关于body-parser介绍比较详细的一个网站:https://www.cnblogs.com/chyingp/p/nodejs-learning-express-body-parser.html

免责声明:文章转载自《【转】nodejs获取post请求发送的formData数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IDEA中Git更新合并代码后,本地修改丢失离群值检测下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ElasticSearch的基本原理与用法

一、简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式支持需要ZooKeeper的支持。 这里有一个详细的ElasticSearch和Solr的对比:http://solr-vs-elasticsearch.co...

C# WebApi 接口传参详解

本篇打算通过get、post、put、delete四种请求方式分别谈谈基础类型(包括int/string/datetime等)、实体、数组等类型的参数如何传递。 一、get请求 对于取数据,我们使用最多的应该就是get请求了吧。下面通过几个示例看看我们的get请求参数传递。 1、基础类型参数 ? 1 2 3 4 5 [HttpGet] publ...

ASP.NET Web API(一):使用初探,GET和POST数据

概述 REST(Representational State Transfer表述性状态转移)而产生的REST API的讨论越来越多,微软在ASP.NET中也添加了Web API的功能。 我们看dudu的文章HttpClient + ASP.NET Web API, WCF之外的另一个选择知道了博客园也开始使用了Web API,且在使用Web API B...

OSG的节点访问

OSG中节点的访问使用的是一种访问器模式。 一个典型的访问器涉及抽象访问者角色(Visitor), 具体访问者(Concrete Visitor), 节点角色(Node)。 OSG中访问者角色为NodeVisitor类,其基本结构如下: NodeVisitor(TraversalMode tm) //构造函数,TraversalMode为节点树的遍历方式...

electron制作上位机软件篇(一):编译安装serialport

参考:https://blog.csdn.net/qq_25430563/article/details/87968837https://blog.csdn.net/weixin_36250061/article/details/103472978https://github.com/serialport/node-serialport/issues/17...

Laravel-mix 中文文档

镜像地址 : https://segmentfault.com/a/1190000015049847原文地址: Laravel Mix Docs   概览   基本示例 larave-mix 是位于webpack顶层的一个简洁的配置层,在 80% 的情况下使用 laravel mix 会使操作变的非常简单。尽管 webpack 非常的强大,但大部分...