阅读快递路线的内容

时间:2018-01-29 21:48:28

标签: node.js express routes

有谁知道我可以阅读快递路线内容的方式?例如,假设我有一条路线:

router.post('/test', (req, res) => {
  let postBody = {
    firstName: {
      required: true,
      description: "First Name"
    },
    lastName: {
      required: true,
      description: "Last Name"
    },
    email: {
      required: true,
      description: "Your email"
    }
  }

  res.json({
    msg: "Success"
  })

})

我的目标是在应用启动时阅读每条路线的postBody内容。

我的app.js

import express from 'express'

const router = express.Router()
const app = express()


app._router.stack.forEach(middleware => {
  if (middleware.handle && middleware.handle.stack) {
     middleware.handle.stack.forEach(route => {
       console.log(route)
     })
  }
})

app.use(router)

使用上面的代码,我可以打印出所有路线。但是,我希望在应用程序启动时打印出每条路线的postBody。有人可以帮忙吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

保留postBody变量的地方仅在命中这些路线时执行。要在这些回调之外阅读它们,您应该能够将它们传递到公共模块中。在下面的示例中,我将其称为“postBodies”。每个路由都将其postBody传递给此模块,并作为主app.js文件底部的最后一个条目,我调用readAll()来打印出所有内部存储的postBody值。

const postBodies = require("./postBodies.js")

router.post('/test', (req, res) => {
  let postBody = {
    firstName: {
      required: true,
      description: "First Name"
    },
    lastName: {
      required: true,
      description: "Last Name"
    },
    email: {
      required: true,
      description: "Your email"
    }
  }
  postBodies.update(postBody)


  res.json({
    msg: "Success"
  })

})

postBodies.js

var bodies[]

module.exports.update = function(x){
  bodies.push(x)
}

module.exports.readAll = function(){
  bodies.forEach(function(x){
   console.log(x)
  }
}

app.js或index.js

在所有路线呼叫后的最底部。

postBodies.readAll()