<代码> 1,帖子请求: HTTP/1.1 代码>协议规定的HTTP代码> <代码>请求方法有<代码>选项,,,,,删除、跟踪,连接> 代码这几种。其中<代码> 代码>后一般用来向服务端提交数据。
2, <代码> - type> 代码:是指<代码> http/https> 代码发送信息至服务器时的内容编码类型,<代码> - type> 代码用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。四种常见的<代码> 代码>后请求的<代码> - type> 代码数据类型:
-
<李>应用程序/x-www-form-urlencoded李>
<李>多部分/格式李>
<李> application/json李>
<李> text/xml 李>
3 <代码>表达。js代码>: <代码> 代码>是表达一个保持最小规模的灵活的<代码>节点。js Web> 代码应用程序开发框架,为<代码>网络> 代码和移动应用程序提供一组强大的功能。
本文我们主要介绍<代码> 代码>后请求的4种<代码> - type> 代码数据类型,以及如何使用<代码> 代码>来表达对每种<代码> - type> 代码类型进行解析。已经将完整的代码实例上传到<代码> github, github> 代码地址为:https://github.com/fengshi123/request_example 欢迎明星。
<强> 强>
<强> 1,应用程序/x-www-form-unlencoded 强>
最常见的<代码> 代码>后提交数据的方式,浏览器的原生<代码> 代码>表形式单,如果不设置<代码> enctype 代码>属性,那么最终就会默认以<代码>应用程序/x-www-form-urlencoded 代码>方式提交数据。
1.1,前端请求代码
var reqParam=" name=杰克”; xhr。setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”); xhr.send (reqParam);
1.2,服务端解析代码
app.post ('/urlencoded ', bodyParser.urlencoded({扩展:真})、功能(要求,res) { var={结果 名称:req.body.name, 性别:男, 年龄:15 }; res.send(结果); });
1.3,浏览器请求/响应截图
请求:
响应:
<强> 2,多部分/格式强>
使用表单上传文件时,必须指定表单的<代码> enctype 代码>属性值为<代码>多部分/格式> 代码。请求体被分割成多部分,每部分使用<代码> 代码>——边界分割开始,紧接着内容描述信息,最后是字段具体内容(文本或二进制),如果传输的是文件,还要包含文件名和文件类型信息;
2.1,前端请求代码
var reqParam=new FormData (document.form2); xhr.send (reqParam);
2.2,服务端解析代码
<代码> 代码>表达提供了两种插件<代码>的代码>和<代码>多党> 代码来处理数据类型为<代码>多部分/格式> 代码的情况,以下我们分别用两个插件进行处理;
2.2.1,强大的插件
(1)安装插件
npm安装强大——保存
(2)服务端解析处理
app.post (/formData1,函数(点播,res) { var=new formidable.IncomingForm形式(); 的形式。uploadDir="上传/? 的形式。解析函数的要求,(呃,字段,文件){ var obj={}; 种(字段)。forEach(函数(名字){ obj[名字]=[名字]字段; }); 种(文件)。forEach(函数(名字){ 如果文件(名称),,文件[名字]. name) { obj文件[名字]=[名字]; fs.renameSync(文件[名字]。路径,形式。uploadDir +文件[名字]. name); } }); res.send (obj); }); });2.2.2
,多党制插件
(1)安装插件
npm安装多党——保存
(2)服务端解析处理
app.post (/formData2,函数(点播,res) {//解析一个文件上传 var=new multiparty.Form形式();//设置编辑 的形式。编码=皍tf - 8”;//设置文件存储路径 的形式。uploadDir="上传/?//设置单文件大小限制 的形式。maxFilesSize=2000 * 1024 * 1024; 的形式。解析函数的要求,(呃,字段,文件){ var obj={}; 种(字段)。forEach(函数(名字){ obj[名字]=[名字]字段; }); 种(文件)。forEach(函数(名字){ 如果文件(名称),,文件[名字][0],,文件[名字][0].originalFilename) { obj文件[名字]=[名字]; fs.renameSync(文件[名字][0]。路径,形式。uploadDir +文件[名字][0].originalFilename); } }); res.send (obj); }); });浅谈Express.js解析文章数据类型的正确姿势