node.js依賴express解析post請(qǐng)求四種數(shù)據(jù)格式
分別是這四種:
1、www-form-urlencoded
這是http的post請(qǐng)求默認(rèn)的數(shù)據(jù)格式,需要body-parser中間件的支持
服務(wù)器端的demo:
var express = require('express');var app = express();var bodyParser = require('body-parser');app.use(bodyParser.urlencoded({ extended:true}));app.post('/urlencoded', function(req, res){ console.log(req.body); res.send(" post successfully!");});app.listen(3000);可以用postman進(jìn)行測(cè)試,這里就不贅述。
2、form-data
這種方式一般用于數(shù)據(jù)上傳,需要中間件connect-multiparty的支持
服務(wù)器端的demo:
var multipart = require('connect-multiparty');var multipartMiddleware = multipart();app.post('/formdata',multipartMiddleware, function (req, res) {console.log(req.body);res.send("post successfully!");});3、application/json
body-parser中間件支持json解析, 添加中間件進(jìn)行解析即可
app.use(bodyParser.json());
4、text/xml
body-parser默認(rèn)不支持這種數(shù)據(jù)格式
解決方法:把請(qǐng)求體參數(shù)按照字符串讀取出來(lái),然后使用 xml2json 包把字符串解析成json對(duì)象,然后對(duì)json對(duì)象進(jìn)行操作,方便得多。
注意:我們還是要使用 body-parse 得到字符串,然后再轉(zhuǎn)化.
利用req上定義的事件 data 來(lái)獲取http請(qǐng)求流, end 事件結(jié)束請(qǐng)求流的處理.
利用 xml2json 把上面得到的請(qǐng)求參數(shù)流(我們直接轉(zhuǎn)化為字符串)轉(zhuǎn)化為 json 對(duì)象.
demo如下:
var express = require('express');var bodyParser = require('body-parser');var xml2json=require('xml2json');var app = express();app.use(bodyParser.urlencoded({extended: true}));app.post('/xml', function (req, res) {req.rawBody = '';//添加接收變量var json={};req.setEncoding('utf8');req.on('data', function(chunk) { req.rawBody += chunk;});req.on('end', function() {json=xml2json.toJson(req.rawBody);res.send(JSON.stringify(json));}); });app.listen(3000);以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注