node.js - Express 框架的body-parser的用法
本文介绍了node.js - Express 框架的body-parser的用法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
对body-parser
的方法的用法有些疑问,看了body-parser
在Github上的说明,以及其他一些博客,感觉都说的不清楚。我通过使用demo测试,知道.urlencoded
方法可以把request body
中的字符串解析成object
,例如:前台请求中的请求参数是:"aa=aa"
这样的字符串,node后台使用bodyParser.urlencoded
中间件方法之后req.body={aa:aa}
那么bodyParser.json()
是把什么格式的请求参数转化成什么呢?还有bodyParser.text()
以及bodyParser.raw()
呢?
解决方案
等等,我翻车了
它是先按照你在 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)
})
}
}
这篇关于node.js - Express 框架的body-parser的用法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文