body-parser与querystring与multer的区别
body-parser express中间件
  body-parser是用来解析http请求体的,是express默认使用的中间件之一。
  (只解析post的普通数据请求,无法解析post文件请求)
使用方法:
	const bodyParser=require('body-parser');
	app.use=(bodyParser.json);//解析为json格式
	app.use=(bodyParser.urlencoded({extended:false}));
	//解析表单类提交的数据,也就是请求体中Content-Type: application/x-www-form-urlencoded的数据
	//返回的对象是一个键值对,当extended为false,键的值为'String'或'Array',为true则可为任何数据类型。
Content-Type的四种类型:
	  application/x-www-form-urlencoded 常见的form提交
	  multipart/form-data 文件提交
	  application/json 提交json格式的数据
	  text/xml 提交xml格式的数据
querystring node内建对象
  querystring是node的内建对象之一,用来将字符串解析为对象,不支持多级嵌套字符串的解析。
使用方法:
	querystring.parse("info[name]=henry&info[age]=30&hobby[1]=sport&hobby[2]=coding")
	解析结果:{ 
    			      'info[name]': 'henry',
    			      'info[age]': '30',
    			      'hobby[1]': 'sport',
   			      'hobby[2]': 'coding'
  		       }
qs  第三方插件
  是querystring的一个库,支持多级字符串嵌套解析。(最多只解析5层嵌套)
使用方法:
	qs.parse("info[name]=henry&info[age]=30&hobby[1]=sport&hobby[2]=coding")
	解析结果:{ info: {
      				      name: 'henry',
      				      age: '30'
    			      },
    		          hobby: [ 'sport', 'coding' ]
  		      }
multer express的上传文件中间件
  body-parser只支持post请求的普通数据解析,multer支持对post请求的文件解析。
使用方法:
	1.必须指定表单form类型enctype="multipart/form-data" method="post"
	2.const multerObj=multer({dest: './static/upload'});//上传文件路径
	3.app.use(multerObj.any();)//上传文件类型任意
	4.若是静态文件,需要通过express.static()方法设置
	   app.use('/upload',express.static(path.join(__dirname,'upload')))
	//前面的uploads是一个挂载路径,后面是当前项目的完整绝对路径
body-parser与querystring与multer的区别的更多相关文章
- Request.QueryString与Request的区别
		Request.Form可以获取表单中提交的内容,对于单选则会自定进行判断获取选中的值. Request.QueryString["id"] 只能读取通过地址栏参数传递过来的名为i ... 
- lucene.net 使用过程中的 几个注意事项(含termquery 和QueryParser 的区别)
		几个注意事项1.建立索引时 插入的顺序(不设置document和字段的boost) 会影响到 查询结果的默认排序,建议:将最新生成的文章 最后建索引 这样 查询结果首先显示的是 最后插入的数据2.Bo ... 
- Lucene教程具体解释
		(建立索引)] )中生成的索引文件的存放地址.详细步骤简单介绍例如以下: 1.创建Directory对象,索引目录 2.创建IndexSearch对象,建立查询(參数是Directory对象) 3.创 ... 
- Lucene.Net 2.3.1开发介绍 —— 四、搜索(一)
		原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(一) 既然是内容筛选,或者说是搜索引擎,有索引,必然要有搜索.搜索虽然与索引有关,那也只是与索引后的文件有关,和索引的程序是无关的,因此 ... 
- Lucene的分析过程
		转自:http://www.open-open.com/lib/view/open1348033848724.html Lucene的分析过程 回顾倒排索引的构建 收集待建索引的原文档(Documen ... 
- .net学习笔记----HttpRequest类
		一.HttpRequest的作用 HttpRequest的作用是令到Asp.net能够读取客户端发送HTTP值.比如表单.URL.Cookie传递过来的参数. 返回字符串的那些值就不说了,那些基本上都 ... 
- Lucene查询索引(分页)
		分页查询只需传入每页显示记录数和当前页就可以实现分页查询功能 Lucene分页查询是对搜索返回的结果进行分页,而不是对搜索结果的总数量进行分页,因此我们搜索的时候都是返回前n条记录 package c ... 
- 第六步:Lucene查询索引(优化一)
		package cn.harmel.lucene; import java.io.IOException; import java.nio.file.Paths; import org.apache. ... 
- 第六步:Lucene查询索引
		package cn.harmel.lucene; import java.io.IOException; import java.nio.file.Paths; import org.apache. ... 
随机推荐
- JConsole&VisualVM监控总结
			简介JConsole(以下写作jconsole),VisualVM(以下写作jvisualvm ) 都是比较好的JVM调优工具,且都为JDK自带,可在命令行直接启动. 监控示例Server端(需要监控 ... 
- 「题解」NOIP模拟测试题解乱写II(36)
			毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ... 
- Composer环境混乱引起--Fatal error: Call to undefined method Fxp
			Fatal error: Call to undefined method Fxp\Composer\AssetPlugin\Package\Version\V ersionParser::parse ... 
- 原生ajax封装及用法
			/* 封装ajax函数 * @param {string}opt.type http连接的方式,包括POST和GET两种方式 * @param {string}opt.url 发送请求的url * @ ... 
- 菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表ngx_chain_t[转]
			菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表 ngx_chain_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ... 
- JDK源码阅读--Hashtable
			public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable ... 
- PAT甲级——A1102 Invert a Binary Tree
			The following is from Max Howell @twitter: Google: 90% of our engineers use the software you wrote ( ... 
- topology进程结束会不会关闭数据库连接
			测试环境:redhat,oracle 11.2.0.3.0 测试目标:当java进程关闭之后,进程的数据库连接会不会被释放,何时被释放 实验证明:在运行topology前,执行 select coun ... 
- @RestControllerAdvice作用及原理
			原文:Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@Exceptio ... 
- CodeForces 232C Doe Graphs(分治+搜索)
			CF232C Doe Graphs 题意 题意翻译 \(Doe\)以她自己的名字来命名下面的无向图 \(D(0)\)是只有一个编号为\(1\)的结点的图. \(D(1)\)是只有两个编号分别为\(1\ ... 
