Express body-parser中间件
-
body-parser是用于解析HTTP请求体的中间件,可以解析JSON、Raw、text、URL-encoded格式的请求体;
-
只使用node原生的http模块,不依赖第三方中间件,可用如下方法解析请求体:
const http = require('http');
http.createServer(function(req, res){
if(req.method.toLowerCase() === 'post'){
let body = '';
//此步骤为接收数据
req.on('data', function(chunk){
body += chunk;
});
//开始解析
req.on('end', function(){
if(req.headers['content-type'].indexOf('application/json')!-1){
JSON.parse(body);
}else if(req.headers['content-type'].indexOf('application/octet-stream')!-1){
//raw格式请求体解析
}else if(req.headers['content-type'].indexOf('text/plain')!-1){
//text文本格式请求体解析
}else if(req.headers['content-type'].indexOf('application/x-www-form-urlencoded')!-1){
//url-encoded格式请求体解析
}else{
//其他格式解析
}
})
}else{
res.end('其他方式提交')
}
}).listen(3000) -
Express框架默认使用body-parser作为请求体解析中间件,在app.js文件中找到 var bodyParser = require('body-parser');,这样就可以在项目的application级别,引入了body-parser模块处理请求体。在实际项目中,不同路径可能要求用户使用不同的内容类型,body-parser还支持为单个express路由添加请求体解析,比如:
var express = require('express');
var bodyParser = require('body-parser');
var app = new express();//创建application/json解析
var jsonParser = bodyParser.json();//创建application/x-www-form-urlencoded
var urlencodedParser = bodyParser.urlencoded({extended: false});//POST /login 中获取URL编码的请求体
app.post('/login', urlencodedParser, function(req, res){
if(!req.body) return res.sendStatus(400);
res.send('welcome, ' + req.body.username);
})//POST /api/users 获取JSON编码的请求体
app.post('/api/users', jsonParser, function(req,res){
if(!req.body) return res.sendStatus(400);
//create user in req.body
}) -
body-parser模块的API:
当请求体解析之后,解析值会被放到req.body属性中,当内容为空时候,为一个空对象{}
---bodyParser.json() --解析JSON格式
---bodyParser.raw() --解析二进制格式
---bodyParser.text() --解析文本格式
---bodyParser.urlencoded() --解析文本格式

浙公网安备 33010602011771号