如何使用Express和Node仅在POST上添加中间件

我有一个中间件,只有在http方法发布后才能应用。

以下工作正常,但我觉得有一个更好的办法:

'use strict' const express = require('express'), router = express.Router() router.use((req, res, next) => { if (req.method === 'POST') { // do stuff } return next() }) module.exports = router 

我想要做这样的事情,但它不起作用:

 'use strict' const express = require('express'), router = express.Router() router.post((req, res, next) => { // do stuff return next() }) module.exports = router 

您可以使用*符号:

 const express = require('express') const app = express(); app.post('*', (req, res, next) => { console.log('POST happen') next(); }) app.post('/foo', (req, res) => { res.send('foo'); }); app.post('/bar', (req, res) => { res.send('bar'); }); app.listen(11111); 

这将在POST /foo上使用“foo”string进行响应,在POST /bar上使用“bar”string进行响应,但始终将“POST发生”logging到控制台。