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();

    //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()--解析文本格式

猜你喜欢

转载自www.cnblogs.com/eslovez/p/12118973.html
今日推荐