express学习(二)—— Post()类型和中间件

1.数据:GET、POST

2.中间件:使用、写、链式操作

  • GET-无需中间件
    req.query

  • POST-需要"body-parser"

server.use(bodyParser.urlencoded({}));

server.use(function (){
	req.body
});
  • 链式操作:

1.1.GET、POST

利用 req.query

  server.use(bodyParser.urlencoded({extended:false/true,limit: }));  //limit限制 大小
  server.use(function (req, res, next){
    req.body
  });

疑问:bodyParser.urlencoded 中设置 extended 为 true 和为 false 有什么区别吗?

当extended为false的时候,键值对中的值就为'String'或'Array'形式,为true的时候,则可为任何数据类型。

2.1.链式操作

  server.use(function (req, res, next){});
  server.get('/', function (req, res, next){});
  server.post(function (req, res, next){});

next——下一个步骤
next();

  server.use('/login', function (){
    mysql.query(function (){
      if(有错)
        res.emit('error');
      else
        next();
    });
  });

2.2 中间件(body-parser)、自己写中间件

有个 next(); 参数

 server.use(function (req, res, next){
    var str='';
    req.on('data', function (data){
      str+=data;
    });
    req.on('end', function (){
      req.body=querystring.parse(str);
      next();
    });
  });

自己写的中间件实例:

module模块:

import { request } from 'https';
import { read } from 'fs';

// 自己写的中间件
const querystring=require('querystring');

module.exports={
  aaa: function (){
    return function (req, res, next){
      var str='';
      req.on('data', function (data){
        str+=data;
      });
      req.on('end', function (){
        req.body=querystring.parse(str);

        next();
      });
    };
  }
}

js文件:

const express = require('express');
const bodyParser2 = require('  //改成你自己的路径 ');

var server = express();
server.listen(8080)

// 用自己的中间件
server.use(bodyParser2.aaa());

server.use('/',function(req,res){
    console.log(req.body);
})


原文地址:https://www.cnblogs.com/n2meetu/p/7977069.html