获取请求参数的方法 - 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);
-
中间件相当于java中的过滤器(filter),但是远比过滤器灵活强大很多,因为javascript的灵活性,可以随时更新req和res对象。。 而java想要在过滤器中重写req和res对象,就需要实现2个类。。
-
use 相当于java中的service方法,可以处理任何请求。
-
post请求可以获得
?id=xxx
和/455322185
的参数。 -
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/
打印:
应用级的中间件执行...