body-parser 中间件原理分析与实现

本文详细分析了body-parser中间件的工作原理,包括基本使用、名词解析,如HTTP请求头的MIME类型和传输编码。进一步探讨了模块内部的选项配置、默认导出函数的实现,以及如何根据请求类型选择合适的解析模块。核心部分阐述了如何处理不同编码类型的请求体,解压流数据并将其绑定到req.body。最后,总结了body-parser中间件的关键功能和应用。
摘要由CSDN通过智能技术生成

一、前沿

body-parser 作为Express中间件,其作用是解析 http 请求体中的 body 数据,将数据解析成对象后绑定到req.body中。

二、基本使用

// express3.x版本集成了body-parser 
const express = require('express')
const bodyParser = require('bodyParser')

const app = new express()
/**
 * 默认采用bodyParser解析json、urlencoded类型body
 */
app.use(bodyParser())
/**
 * 解析 application/json类的body
 * express.json == bodyParser.json
 */
app.use(express.json())
/**
 * 解析 application/x-www-form-urlencoded 类的body
 * express.urlencoded === bodyParser.urlencoded
 */
app.use(express.urlencoded({
    extended: false }))

三、名词解析

HTTP请求报文与实体中几个相关的概念

1. 指定头部资源的类型 Content-Type

Content-Type 用于指定资源的MIME类型

// application/json;为资源的MIME类型
// chatset指定字符的编码
Content-Type: application/json; charset=utf-8;

HTTP常见的MIME类型有:application/jsontext/htmlapplication/x-www-form-urlencoded

2. 传输编码 Content-Encoding

Content-Encoding 列出当前实体消息的人和编码类型,以及编码顺序。用于压缩消息数据

// gzip、deflate说明采用的压缩算法
Content-Encoding: gzip,compress,deflate,br

四、模块分析

一、options 选项

bodyParser.json(options)

  • inflate : 设置为true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值