本篇文章為大家展示了body-parser怎么在node.js中使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)專業(yè)提供資陽服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購(gòu)買資陽服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。Node中的核心模塊分兩類:一類是自帶的核心模塊,如http、tcp等,第二類是第三方核心模塊,express就是與http對(duì)應(yīng)的第三方核心模塊,用于處理http請(qǐng)求。express在3.0版本中自帶有很多中間件,但是在express 4.0以后,就將除static(靜態(tài)文件處理)以外的其他中間件分離出來了;在4.0以后需要使用中間件時(shí),就需要單獨(dú)安裝好相應(yīng)的中間件以后調(diào)用,以下3.0與4.0中間件的中間件區(qū)別(3.0是內(nèi)置中間件屬性名,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
我是在學(xué)習(xí)nodejs時(shí)候,對(duì)著書本的例子時(shí),使用bodyParser這個(gè)中間件,在終端運(yùn)行出問題,報(bào)錯(cuò)大概意思也是express4.0中沒有bodyParser這個(gè)內(nèi)置中間件了,還給了body-parser的GitHub源代碼地址:https://github.com/expressjs/body-parser.
經(jīng)過看源代碼下面的說明知道了body-parser的三種用法:
在講用法之間,我們需要弄清楚下面四個(gè)不同的處理方法:這四個(gè)處理方法分別對(duì)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、底層中間件用法:這將攔截和解析所有的請(qǐng)求;也即這種用法是全局的。
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方法調(diào)用body-parser實(shí)例;且use方法沒有設(shè)置路由路徑;這樣的body-parser實(shí)例就會(huì)對(duì)該app所有的請(qǐng)求進(jìn)行攔截和解析。
2、特定路由下的中間件用法:這種用法是針對(duì)特定路由下的特定請(qǐng)求的,只有請(qǐng)求該路由時(shí),中間件才會(huì)攔截和解析該請(qǐng)求;也即這種用法是局部的;也是最常用的一個(gè)方式。
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)方法調(diào)用body-parser實(shí)例;且該方法有設(shè)置路由路徑;這樣的body-parser實(shí)例就會(huì)對(duì)該post(或者get)的請(qǐng)求進(jìn)行攔截和解析。
3、設(shè)置Content-Type 屬性;用于修改和設(shè)定中間件解析的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' }));
上述內(nèi)容就是body-parser怎么在node.js中使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。