获取请求参数的方法 - pod4g/tool GitHub Wiki

形如下列的URI

/test/455322185?id=222

一、req.param

// 路由级中间件
router.get('/test/:qq',(req,res,next) => {
 
   console.log(req.params);// {qq:'455322185'};
   
   console.log(req.params.qq); // '455322185'

});

二、req.query

// 路由级中间件
router.get('/test/:qq',(req,res,next) => {

  console.log(req.query); // {id:'222'};

  console.log(req.query.id); // '222'

})

三、body数据

body数据即实体内容

A、使用路由级中间件处理

// 路由级中间件
router.post('/test/:qq',(req,res,next) => {

   let data = '';

   req.on('data' , chunk => data += chunk );

   req.on('end' , () => {

      console.log(data); // {data:["li","yan","feng"]}
      
      next();
   })
 
});

B、使用应用级中间件处理

// 应用级中间件
app.use((req,res,next) => { 

   let data = '';

   req.on('data' , chunk => data += chunk );

   req.on('end' , () => {
      
      req.body = data;
      console.log(data); // {data:["li","yan","feng"]}
      next();
   })
});

// 应用级中间件
router.post('/test/:qq', (req,res,next) => {

    console.log(req.body); // {data:["li","yan","feng"]}

})

// 把路由挂载至应用
app.use('/ossvideo',router);



  1. 中间件相当于java中的过滤器(filter),但是远比过滤器灵活强大很多,因为javascript的灵活性,可以随时更新req和res对象。。 而java想要在过滤器中重写req和res对象,就需要实现2个类。。

  2. use 相当于java中的service方法,可以处理任何请求。

  3. post请求可以获得?id=xxx/455322185的参数。

  4. get请求不可以获得body数据

应用级中间件和路由级中间件的区别


const router = express.Router();

// 应用级中间件。会处理所有在 / 路径下的请求
app.use((req, res, next) => {
  // do something...
  console.log('应用级的中间件执行...');
  next();
});

// 把路由开始匹配路径挂载到 /error_reciver 下
// 路由级的中间件只会处理开始匹配位置之后的url
app.use('/error_reciver', router)

router.use( (req, res, next){
  // do something...
  console.log('路由级的中间件执行...');
  next();
});

router.post('/', (req, res) => {
  // do something...
});

请求:http://example.com/error_reciver

打印:

应用级的中间件执行...
路由级的中间件执行...

请求:http://example.com/

打印:

应用级的中间件执行...