【问题标题】:How to add a middleware only on POST with Express and Node如何使用 Express 和 Node 仅在 POST 上添加中间件
【发布时间】:2017-05-24 09:58:47
【问题描述】:

我有一个中间件,我想只在 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

【问题讨论】:

    标签: node.js express post router middleware


    【解决方案1】:

    你可以使用*符号:

    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”字符串响应,在POST /bar 上以“bar”字符串响应,但始终将“POST发生”记录到控制台。

    【讨论】:

    • router.post('*', (req, res, next) => { // do stuff return next() }) 工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多