node.js中express中间件body-parser的介绍与用法详解

 更新时间:2017年05月23日 10:42:05   作者:不积跬步无以至千里  
这篇文章主要给大家介绍了关于node.js中express中间件body-parser的相关资料,文章通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

前言

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' }));

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 初探nodeJS

    初探nodeJS

    本文主要介绍了nodeJS的基础知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 教你彻底搞懂ESM与CJS互相转换

    教你彻底搞懂ESM与CJS互相转换

    这篇文章主要为大家介绍了ESM与CJS互相转换的理解与实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • node微信开发之获取access_token+自定义菜单

    node微信开发之获取access_token+自定义菜单

    这篇文章主要介绍了node微信开发之获取access_token+自定义菜单,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 使用nodejs、Python写的一个简易HTTP静态文件服务器

    使用nodejs、Python写的一个简易HTTP静态文件服务器

    这篇文章主要介绍了使用nodejs、Python写的一个简易HTTP静态文件服务器,分为nodejs和Python两个版本,用类似淘宝的CSS、JS文件加载方式处理静态文件加载,需要的朋友可以参考下
    2014-07-07
  • node.js自动上传ftp的脚本分享

    node.js自动上传ftp的脚本分享

    这篇文章主要给大家介绍了一个关于node.js自动上传ftp脚本的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • node.js基础知识小结

    node.js基础知识小结

    本文给大家汇总介绍了学习node.js的一些关于开发环境的基础知识,非常简单,给新手们参考下
    2018-02-02
  • 详解使用Node.js 将txt文件转为Excel文件

    详解使用Node.js 将txt文件转为Excel文件

    这篇文章主要介绍了详解使用Node.js 将txt文件转为Excel文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Express框架之connect-flash详解

    Express框架之connect-flash详解

    本篇文章主要介绍了Express框架之connect-flash详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • NodeJs form-data格式传输文件的方法

    NodeJs form-data格式传输文件的方法

    这篇文章主要介绍了NodeJs form-data格式传输文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • nodejs微信开发之自动回复的实现

    nodejs微信开发之自动回复的实现

    这篇文章主要介绍了nodejs微信开发之自动回复的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论