express外掛之body-parser
這是node.js的訊息體解析中介軟體,但是這個中介軟體不會解析multipart body,由於這種訊息體很複雜而且也很大。這種multipart的訊息體可以用multer,formidable等來完成(mulpipart表示表單的enctype屬性)
這個模組可以提供以下的解析器:
JSON body parser
Raw body parser
Text body parser
URL-encoded form body parser
你還可能對一下的訊息體解析外掛比較有興趣:
body
co-body
所有中介軟體都會把解析好的訊息體封裝到req.body上面,如果沒有訊息體解析那麼返回的就是一個空物件{}。當然這個模組也可能丟擲異常var bodyParser = require('body-parser')
bodyParser.json(options)
返回一個只解析json的中介軟體,可以支援任何unicode編碼的訊息體,同時也支援gzip和deflate編碼。最後儲存的資料都放在req.body物件上
options引數包含以下內容:
inflate:預設為true。
limit:訊息體的最大值,數字表示最大位元。也可以是string,預設值'100kb'
reviver:這個選項被直接傳入JSON.parse函式,並作為第二個引數。
strict:如果設定為true,那麼只會接受array或者object。false表示接受任何JSON.parse接受的引數
type:指定這個中介軟體會解析的媒體型別。可以是一個函式也可以是一個字串。如果是一個string那麼會被傳入type-is這個庫,並同時可以為
副檔名如json,或者mime型別(application/json),或者一個包含萬用字元的mime型別(*/*,*/json)。如果是一個函式,那麼這個函式被呼叫,傳入引數
為fn(req),而且這個req是返回的解析過的真實值。預設為application/json(這裡是json方法)
verify:如果提供了,那麼呼叫時為verify(req,res,buf,encoding),buf表示一個Buffer物件,其中包含的是初始的訊息體,也就是沒有被解析過的訊息體,encoding
表示這個請求的編碼型別,如果丟擲異常那麼停止解析
bodyParser.raw(options)
返回一箇中間件,這個中介軟體吧所有的訊息解析為一個Buffer,而且支援自動的gzip和defalte編碼。解析後,這個Buffer包含的是訊息體。
options引數包含以下內容:
inflate:和上面一致
limit:和上面一致
type:如果傳入string那麼這個string被傳入到type-is庫,這個string副檔名可以是bin,或者mime型別是application/octet-stream,也可以是萬用字元(*/*,application/*)。除了預設的返回值為application/octet-stream以外和上面是一致的
verify:和上面一致
bodyParser.text(options)
返回一箇中間件,這個中介軟體可以把訊息體解析為一個字串,而且支援自動的gzip和deflate編碼。解析的結果在req.body中
options引數包含以下內容:
defaultCharset:設定一個預設的編碼對文字內容進行編碼,如果在content-type中沒有指定就用這個預設的編碼
inflate:和上面一致
limit:和上面一致
type:如果是一個string,那麼被傳入到type-is的庫中,這個string可以是副檔名為txt,或者mime型別為text/plain,或者含有萬用字元的型別。
預設為text/plain
verify:和上面一致
bodyParser.urlencoded(options)
返回一個只解析urlencoded訊息體的中介軟體,只接受utf-8對訊息體進行編碼,同時支援自動的gzip/deflate編碼解析過的訊息放在req.body物件中。這個物件包含的鍵值對,同時值可以是一個string或者一個數組(當extended為false的時候)。也可以是任何型別(當extended設定為true)
options引數包含以下內容:
extended:如果設定為false,那麼對URL-encoded的資料的解析採用querystring庫,如果設定為true那麼採用qs庫。 extended符號允許富物件和陣列被編碼為URL-encoded的型別,也可以是一個JSON編碼的資料。預設為true但是還是要仔細研究一下qs和querystring的區別,以便正確的選擇
inflate:和上面一致
limit:和上面一致
parameterLimit:指定在URL-encoded的資料中最大的引數的數量,如果引數多於這個數量那麼返回給客戶端a413,。預設值為1000
type:如果這個引數是string那麼會傳遞給type-is庫去判斷,副檔名可以是urlencoded,或者mime型別為 application/x-www-form-urlencoded
或者mime型別為*/x-www-form-urlencoded。預設為application/x-www-form-urlencoded
verify:和上面一致
例子:
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))//extended為false表示使用querystring來解析資料,這是URL-encoded解析器
// parse application/json
app.use(bodyParser.json())//新增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))
})
這個例子演示了新增一個原生的JSON和URL-encoded解析器去解析訊息體。var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// create application/json parser
var jsonParser = bodyParser.json()//獲取JSON解析器中介軟體
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })//url-encoded解析器
// POST /login gets urlencoded bodies
app.post('/login', urlencodedParser, function (req, res) {//註冊URL解析器
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) {//使用json中介軟體獲取json資料
if (!req.body) return res.sendStatus(400)
// create user in req.body
})
這個例子演示瞭如何在需要的路由中新增一個body-parser,這也是express最推薦的使用body-parser的方式// 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' }))
所有的中介軟體可以指定對訊息進行解析的編碼方式qs對字串的處理和multer可以對型別是
multipart/form-data的表單進行處理
相關推薦
express外掛之body-parser
body-parser中介軟體: 這是node.js的訊息體解析中介軟體,但是這個中介軟體不會解析multipart body,由於這種訊息體很複雜而且也很大。這種multipart的訊息體可以用multer,formidable等來完成(mulpipart表示表單的e
Nodejs基礎之body-parser
body-parser 原理:用req.on和querystring處理請求資料 const parser = require('body-parser')// 引入 server.use(p
node的express框架,核心第三方模塊body-parser 獲取我們所有post請求傳過來數據
賦值 傳遞 xtend 接收 返回 .json oca data host - 安裝 body-parser模塊- npm install body-parser -S- 調用- let bodyParser=require(‘body-parser‘);- 設置中間件-
[轉] Nodejs 進階:Express 常用中間件 body-parser 實現解析
tree define pan iconv 不同 erro unzip body message 寫在前面 body-parser是非常常用的一個express中間件,作用是對post請求的請求體進行解析。使用非常簡單,以下兩行代碼已經覆蓋了大部分的使用場景。 app.
node.js初使用之使用express外掛快速搭建登入註冊
首先,介紹些express,express是基於node.js平臺快速,開放,極簡的web開發框架,express 便於我們快速的開發node api介面 得保證安裝了node.js 下載好以後,新建server.js檔案 //引入模組 const express = require('
react+node.js中body-parser外掛傳送post請求,拿不到req.body問題
只需要把body-parser放在user.js檔案前面引入 sever.js const express = require('express') const bodyParser = require('body-parser') const use
Nodejs進階:Express常用中介軟體body-parser實現解析
原文連結 body-parser是非常常用的一個express中介軟體,作用是對post請求的請求體進行解析。使用非常簡單,以下兩行程式碼已經覆蓋了大部分的使用場景。 app.use(bodyParser.json()); app.use(bodyParser.urle
express body-parser
body-parser 模組 功能: bodyParser用於解析客戶端請求的body中的內容,內部使用JSON編碼處理,url編碼處理以及對於檔案的上傳處理. 另外bodyParse可以接受客戶端a
express body-parser 小書
簡介 cookie-parser是Express最常使用的中介軟體,實際上雖然他名義上是一箇中間件但是實際上已經儼然成為了Express的一個不可或缺的部分. 在Express4的文件中,操作Cookie的部分就一個方法和一個屬性.但是實際上如果你不使用cookie
程序外掛之修改名稱
技術 img png idt chan http alt die 動態 1.建立運行應用程序如PicPick 2.使用工具OllyDbg v1.0窗口工具捕獲該窗口的類名和標題如下圖 3.根據獲取的類名TfrmMDIEditor和標題PPP編寫c代碼如下 #inclu
夢幻成仙,誅滅外掛——《夢幻誅仙手遊》的阻擊外掛之旅
超過 ext 客戶端 left ron 相加 功能 出現 成本 隨著智能手機的全面普及和市場泛娛樂化,移動遊戲行業發展迅猛,無論是市場收入還是用戶規模,手遊在遊戲市場上已經占據了半壁江山。如此火熱的市場吸引了大量外掛、輔助工作室等非法盈利團隊,嚴重影響了遊戲的收益、平衡,縮
nodejs 使用 body-parser 獲取網頁內容
parse nodejs 網頁 url end func body parser .post var bodyParser = require(‘body-parser‘); var urlencodedParser = bodyParser.urlencoded({
python之body標簽中的相關標簽2(14)
word 人物 ext 滾動視圖 png com 表單元素 method check 今日主要內容: 列表標簽 <ul>、<ol>、<dl> 表格標簽 <table> 表單標簽 <fom> 一、列表
瀏覽器外掛之ActiveX開發(四)----web頁面呼叫ActiveX
轉自:http://www.cnblogs.com/qguohog/archive/2013/01/25/2876828.html https://blog.csdn.net/zengraoli/article/details/12078757?utm_source=blogxgwz3 &n
nodejs(十一)獲得post請求體 body-parser
當請求引數在url中的時候,我們可以用request.query獲得請求體,當請求內容不在url中時,我們需要藉助一個body-parser依賴來獲取請求體 var express = require('express') var app = express() var body
本地安裝谷歌的外掛之 CRX格式外掛離線安裝
方法一 :開發模式安裝 [親測] 1.把下載後的.crx副檔名的離線Chrome外掛的副檔名改成.zip或者.rar (如何檢視Chrome外掛的副檔名 資料夾>工具>資料夾>檢視>隱藏已知檔案型別的副檔名),如圖所示: 2.右鍵點選該檔案,並使用壓縮軟體(
Jenkins外掛之 Docker-Plugin 將slave執行在docker容器中
Jenkins外掛名稱 Docker plugin This plugin integrates Jenkins with Docker This plugin allows slaves to be dynamically provisioned using Docker. 外掛文
layui的laydate外掛之坑——渲染問題
最近專案使用了laydate.js這個時間外掛。自從這個外掛升級後確實還挺好用的,在選擇時間上操作非常簡單: laydate.render({ elem: '#test' //或 elem: document.getElementById('test')、elem: lay('#test') 等
4.body-parser中介軟體的使用專門處理前端的post請求,同理get請求在本例不適用,內含如何自定義中介軟體middleware
使用express框架可以結合中介軟體body-parser方便處理前端傳送過來的資料。(class10) 第一部分: 1.新建目錄後,開啟cmd---進入當前目錄---cnpm install express express-static body-parser  
MVPHelper外掛之混淆報錯 ClassCastException: Object cannot be case to xxx
之前在android stduio裡用mvphelper自動生成,最近要發包,加了混淆 打了個release包開啟直接崩了,檢視日誌顯示是獲取的model為null。 以為是泛型的問題,但是加了過濾泛型 -keepattributes Signature 最後想了很多都是不知道為