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是一个挂载路径,后面是当前项目的完整绝对路径

原文地址:https://www.cnblogs.com/surui/p/7550221.html