node.js中express中间件body-parser的介绍与用法详解
发布时间 - 2026-01-11 01:15:01 点击率:次前言

Node中的核心模块分两类:一类是自带的核心模块,如http、tcp等,第二类是第三方核心模块,express就是与http对应的第三方核心模块,用于处理http请求。express在3.0版本中自带有很多中间件,但是在express 4.0以后,就将除static(静态文件处理)以外的其他中间件分离出来了;在4.0以后需要使用中间件时,就需要单独安装好相应的中间件以后调用,以下3.0与4.0中间件的中间件区别(3.0是内置中间件属性名,4.0是需要安装的中间件名称):
|
Express 3.0 Name |
Express 4.0 Name |
|
bodyParser |
body-parser |
|
compress |
compression |
|
cookieSession |
cookie-session |
|
logger |
morgan |
|
cookieParser |
cookie-parser |
|
session |
express-session |
|
favicon |
static-favicon |
|
response-time |
response-time |
|
error-handler |
errorhandler |
|
method-override |
method-override |
|
timeout |
connect-timeout |
|
vhost |
vhost |
|
csrf |
csurf |
body-parser
我是在学习nodejs时候,对着书本的例子时,使用bodyParser这个中间件,在终端运行出问题,报错大概意思也是express4.0中没有bodyParser这个内置中间件了,还给了body-parser的GitHub源代码地址:https://github.com/expressjs/body-parser.
经过看源代码下面的说明知道了body-parser的三种用法:
在讲用法之间,我们需要弄清楚下面四个不同的处理方法:这四个处理方法分别对body的内容采用不同的处理方法;分别是处理json数据、Buffer流数据、文本数据、UTF-8的编码的数据。
bodyParser.json(options) 、bodyParser.raw(options) 、bodyParser.text(options) 、bodyParser.urlencoded(options)
以下是它的三种用法:
1、底层中间件用法:这将拦截和解析所有的请求;也即这种用法是全局的。
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.body, null, 2))
})
express的use方法调用body-parser实例;且use方法没有设置路由路径;这样的body-parser实例就会对该app所有的请求进行拦截和解析。
2、特定路由下的中间件用法:这种用法是针对特定路由下的特定请求的,只有请求该路由时,中间件才会拦截和解析该请求;也即这种用法是局部的;也是最常用的一个方式。
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// create application/json parser
var jsonParser = bodyParser.json()
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
// POST /login gets urlencoded bodies
app.post('/login', urlencodedParser, function (req, res) {
if (!req.body) return res.sendStatus(400)
res.send('welcome, ' + req.body.username)
})
// POST /api/users gets JSON bodies
app.post('/api/users', jsonParser, function (req, res) {
if (!req.body) return res.sendStatus(400)
// create user in req.body
})
express的post(或者get)方法调用body-parser实例;且该方法有设置路由路径;这样的body-parser实例就会对该post(或者get)的请求进行拦截和解析。
3、设置Content-Type 属性;用于修改和设定中间件解析的body类容类型。
// parse various different custom JSON types as JSON
app.use(bodyParser.json({ type: 'application/*+json' });
// parse some custom thing into a Buffer
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }));
// parse an HTML body into a string
app.use(bodyParser.text({ type: 'text/html' }));
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# express
# body
# parser
# parser中间件
# nodejs
# bodyparser
# Node.js使用Middleware中间件教程详解
# node.js express和koa中间件机制和错误处理机制
# node.js使用express-fileupload中间件实现文件上传
# 浅谈node.js中间件有哪些类型
# 浅谈Node.js 中间件模式
# node.js中路由
# 中间件
# get请求和post请求的参数详解
# node.js 中间件express-session使用详解
# node.js cookie-parser 中间件介绍
# Node.js的中间件及使用方法详解
# 会对
# 三种
# 自带
# 第三方
# 源代码
# 也即
# 我是
# 有很多
# 才会
# 对着
# 给了
# 这篇文章
# 就将
# 报错
# 谢谢大家
# 这将
# 两类
# 弄清楚
# 最常用
# 装好
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速启动建站代理加盟业务?
Python文本处理实践_日志清洗解析【指导】
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Angular 表单中正确绑定输入值以确保提交与验证正常工作
百度浏览器如何管理插件 百度浏览器插件管理方法
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
linux top下的 minerd 木马清除方法
Laravel如何发送系统通知?(Notification渠道示例)
Laravel如何实现文件上传和存储?(本地与S3配置)
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何在Windows服务器上快速搭建网站?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何用IIS7快速搭建并优化网站站点?
如何用PHP工具快速搭建高效网站?
Laravel怎么判断请求类型_Laravel Request isMethod用法
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
简单实现Android文件上传
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
jquery插件bootstrapValidator表单验证详解
Laravel如何配置任务调度?(Cron Job示例)
北京专业网站制作设计师招聘,北京白云观官方网站?
如何破解联通资金短缺导致的基站建设难题?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
jQuery中的100个技巧汇总
如何在万网开始建站?分步指南解析
在线制作视频的网站有哪些,电脑如何制作视频短片?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
企业网站制作这些问题要关注
UC浏览器如何设置启动页 UC浏览器启动页设置方法
深圳网站制作培训,深圳哪些招聘网站比较好?
QQ浏览器网页版登录入口 个人中心在线进入
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
香港服务器如何优化才能显著提升网站加载速度?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】

