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自然语言搜索引擎项目教程_倒排索引查询优化案例  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel Fortify是什么,和Jetstream有什么关系  QQ浏览器网页版登录入口 个人中心在线进入  手机软键盘弹出时影响布局的解决方法  如何为不同团队 ID 动态生成多个独立按钮  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  JavaScript如何实现路由_前端路由原理是什么  如何实现javascript表单验证_正则表达式有哪些实用技巧  Windows Hello人脸识别突然无法使用  微信公众帐号开发教程之图文消息全攻略  浅述节点的创建及常见功能的实现  如何在阿里云服务器自主搭建网站?  如何快速查询网址的建站时间与历史轨迹?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  linux top下的 minerd 木马清除方法  高端建站如何打造兼具美学与转化的品牌官网?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何用VPS主机快速搭建个人网站?  如何用IIS7快速搭建并优化网站站点?  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  如何在局域网内绑定自建网站域名?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  如何在万网主机上快速搭建网站?  如何在建站主机中优化服务器配置?  在Oracle关闭情况下如何修改spfile的参数  如何在万网自助建站平台快速创建网站?  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel如何使用查询构建器?(Query Builder高级用法)  如何在阿里云虚拟服务器快速搭建网站?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  python中快速进行多个字符替换的方法小结  想要更高端的建设网站,这些原则一定要坚持!  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何在香港免费服务器上快速搭建网站?  黑客如何通过漏洞一步步攻陷网站服务器?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  javascript中对象的定义、使用以及对象和原型链操作小结  如何快速搭建高效WAP手机网站?  焦点电影公司作品,电影焦点结局是什么?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Laravel怎么使用artisan命令缓存配置和视图  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】