PHP中文网2017-04-17 16:12:33
等等,我翻車了
它是先按照你在 use 時候給定的 options 進行格式化約束的,然後先按照 json 來轉一次,沒出錯了再接著調用 urlencoded 進行表單其他內容進行接收和格式化。
其中json轉的時候默認按照 var type = opts.type || 'application/json'
這個 content-type 來進行格式指定檢查請求頭是不是json,如果不是則默認一個空,不然進行 json 的格式化,然後就是後面的 urlencoded 邏輯了
原始碼如下
https://github.com/expressjs/...
function bodyParser (options) {
var opts = {}
// exclude type option
if (options) {
for (var prop in options) {
if (prop !== 'type') {
opts[prop] = options[prop]
}
}
}
var _urlencoded = exports.urlencoded(opts)
var _json = exports.json(opts)
return function bodyParser (req, res, next) {
_json(req, res, function (err) {
if (err) return next(err)
_urlencoded(req, res, next)
})
}
}