Express中間件,bodyparser,multer,formidable區(qū)別淺談

Express 用于處理請(qǐng)求體的中間件很多,除了標(biāo)題中提到的三個(gè),還有multiparty、busboy等,multiparty性能上不如busboy,而multer是busboy的頂層封裝,效率又提升了一個(gè)檔次。

常見(jiàn)Content-Type類(lèi)型有四種:
  1. application/x-www-form-urlencoded 常見(jiàn)的form提交
  2. multipart/form-data 文件提交
  3. application/json 提交json格式的數(shù)據(jù)
  4. text/xml 提交xml格式的數(shù)據(jù)
Bodyparser中間件

這個(gè)中間件用于處理第1,3種content-type 的body非常的方便,但不能用于處理multipart類(lèi)型的body,具體api可見(jiàn)GitHub,提供了四種方法

  1. bodyParser.json() 將body解析為json
  2. bodyParser.text() 將body解析為文本
  3. bodyParser.raw() 將body解析為二進(jìn)制
  4. bodyParser.urlencoded() 將編碼為URLEncoder的body解析出來(lái)
Multer 中間件

只處理類(lèi)型是multipart/form-data的body。
它的主要功能是: .single('photo') .array('photos', 12) .fields([])分別對(duì)應(yīng)處理上傳文件,批量上傳和分類(lèi)上傳,同時(shí)也帶有處理純文字的功能,用上面三個(gè)方法不帶參數(shù)即可。

Formidable 中間件

Formidable它的主頁(yè)上的特性描述看起來(lái)很屌的樣子,在express中我們用express-formidable ,可用于處理表單和上傳文件,功能大而全,可配置項(xiàng)非常多,最大的區(qū)別是還提供了一個(gè)對(duì)象,用于處理各種事件。

var form = new formidable.IncomingForm()
form.on('fileBegin', function(name, file) {
});
.on('file', function(name, file) {
});
.on('error', function(err) {
});

在實(shí)際開(kāi)發(fā)中,很明顯可以用bodyparser和multer來(lái)分別處理表單和文件,也可以只用formidable,按需取用即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容