body-parser express中間件node
body-parser是用來解析http請求體的,是express默認使用的中間件之一。
(只解析post的普通數據請求,沒法解析post文件請求)express
使用方法:
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則可爲任何數據類型。json
Content-Type的四種類型:
application/x-www-form-urlencoded 常見的form提交
multipart/form-data 文件提交
application/json 提交json格式的數據
text/xml 提交xml格式的數據app
querystring node內建對象post
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 第三方插件ui
是querystring的一個庫,支持多級字符串嵌套解析。(最多隻解析5層嵌套)
使用方法:
qs.parse("info[name]=henry&info[age]=30&hobby[1]=sport&hobby[2]=coding")
解析結果:{ info: {
name: 'henry',
age: '30'
},
hobby: [ 'sport', 'coding' ]
}url
multer express的上傳文件中間件spa
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是一個掛載路徑,後面是當前項目的完整絕對路徑插件