国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

node.js中express中間件body-parser的介紹與用法詳解

2024-05-06 16:37:21
字體:
供稿:網(wǎng)友

前言

Node中的核心模塊分兩類:一類是自帶的核心模塊,如http、tcp等,第二類是第三方核心模塊,express就是與http對應的第三方核心模塊,用于處理http請求。express在3.0版本中自帶有很多中間件,但是在express 4.0以后,就將除static(靜態(tài)文件處理)以外的其他中間件分離出來了;在4.0以后需要使用中間件時,就需要單獨安裝好相應的中間件以后調(diào)用,以下3.0與4.0中間件的中間件區(qū)別(3.0是內(nèi)置中間件屬性名,4.0是需要安裝的中間件名稱):

 

body>

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這個內(nèi)置中間件了,還給了body-parser的GitHub源代碼地址:https://github.com/expressjs/body-parser.

經(jīng)過看源代碼下面的說明知道了body-parser的三種用法:

在講用法之間,我們需要弄清楚下面四個不同的處理方法:這四個處理方法分別對body的內(nèi)容采用不同的處理方法;分別是處理json數(shù)據(jù)、Buffer流數(shù)據(jù)、文本數(shù)據(jù)、UTF-8的編碼的數(shù)據(jù)。

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-urlencodedapp.use(bodyParser.urlencoded({ extended: false })) // parse application/jsonapp.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方法調(diào)用body-parser實例;且use方法沒有設置路由路徑;這樣的body-parser實例就會對該app所有的請求進行攔截和解析。

2、特定路由下的中間件用法:這種用法是針對特定路由下的特定請求的,只有請求該路由時,中間件才會攔截和解析該請求;也即這種用法是局部的;也是最常用的一個方式。

var express = require('express')var bodyParser = require('body-parser') var app = express() // create application/json parservar jsonParser = bodyParser.json() // create application/x-www-form-urlencoded parservar urlencodedParser = bodyParser.urlencoded({ extended: false }) // POST /login gets urlencoded bodiesapp.post('/login', urlencodedParser, function (req, res) { if (!req.body) return res.sendStatus(400) res.send('welcome, ' + req.body.username)}) // POST /api/users gets JSON bodiesapp.post('/api/users', jsonParser, function (req, res) { if (!req.body) return res.sendStatus(400) // create user in req.body})

express的post(或者get)方法調(diào)用body-parser實例;且該方法有設置路由路徑;這樣的body-parser實例就會對該post(或者get)的請求進行攔截和解析。

3、設置Content-Type 屬性;用于修改和設定中間件解析的body類容類型。

// parse various different custom JSON types as JSONapp.use(bodyParser.json({ type: 'application/*+json' });// parse some custom thing into a Bufferapp.use(bodyParser.raw({ type: 'application/vnd.custom-type' }));// parse an HTML body into a stringapp.use(bodyParser.text({ type: 'text/html' }));

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇州市| 基隆市| 三江| 茌平县| 金阳县| 抚顺市| 化州市| 安吉县| 磐安县| 萝北县| 木里| 邵阳县| 北安市| 彝良县| 车致| 洪泽县| 广宁县| 铜梁县| 辽阳县| 卫辉市| 获嘉县| 农安县| 祥云县| 清水县| 三原县| 开封县| 壶关县| 马尔康县| 闽侯县| 崇信县| 上栗县| 外汇| 龙井市| 新绛县| 桦川县| 景德镇市| 双鸭山市| 民乐县| 凤山市| 石渠县| 伊宁市|