如何仅在具有Express和Node的POST上添加中间件

twh*_*mon 6 post router middleware node.js express

我有一个中间件,我想只在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
Run Code Online (Sandbox Code Playgroud)

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

'use strict'

const   express = require('express'),
        router = express.Router()


router.post((req, res, next) => {
    // do stuff

    return next()
})

module.exports = router
Run Code Online (Sandbox Code Playgroud)

Gle*_*ift 13

你可以使用*符号:

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);
Run Code Online (Sandbox Code Playgroud)

这将响应"foo"字符串打开POST /foo并使用"bar"字符串打开,POST /bar但始终将"POST happen"记录到控制台.

  • `router.post('*', (req, res, next) => { // 做东西 return next() })` 有效 (2认同)