久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

node.js中express中間件body-parser如何使用

來源:技術員聯盟┆發布時間:2017-09-15 18:38┆點擊:

我是在學習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' }));