node.js - 如何向 module.exports 路由中的长格式返回请求添加参数?

标签 node.js rest routes hapi.js module.exports

我正在为一个 API 连接区域编写代码,主要是 graphql,但需要为某些事情建立一些 REST 连接,并且等效于以下代码:

foo.js

module.exports = {
  routes: () => {
    return [
      {
        method: 'GET',
        path: '/existing_endpoint',
        handler: module.exports.existing_endpoint
      }, 
      {
        method: 'POST',
        path: '/new_endpoint',
        handler: module.exports.new_endpoint // <--- this not passing variables
      }
    ]
  }, 
    existing_endpoint: async () => {
       /* endpoint that isn't the concern of this */ 
    }, 
    new_endpoint: async (req, res) => {
        console.log({req, res})
        return 1
    }
}

现有的 GET 端点工作正常,但我的 POST 端点总是在 {} 的控制台出错,其中 {req, res} 应该由路由器传入,我怀疑是因为 POST没有收到。我尝试将路由中的 POST 声明更改为 module.exports.new_endpoint(req, res),但它告诉我未找到变量,并且导入的 server.js 确实有该文件(它看起来更像这样......),并且对 server.js 做类似的事情,也得到类似的结果,这意味着这也可能是错误的。此外,我们有一个非常严格的 eslint 设置,所以我不能真正改变调用的格式。

我在网上看到的每个使用这些库的例子都是一些简短的形式,或者在路由调用中包含函数,而不是像这样的长形式。如何以这种格式进行 POST?

/* hapi, environment variables, apollog server, log engine, etc. */
/* preceeding library inclusions */ 
const foo = require('./routes/foo')
const other_route = require('./routes/other_route')

const startServer = async () => {
    const server = Hapi.server({port, host})

    server.route(other_route.routes())
    server.route(foo.routes())
}

最佳答案

这是 Node v16 中 Hapi 的错误。 I just opened an issue.

您当前的解决方案是:

  • 升级到 Hapi v20
  • 使用n或为此项目降级到 Node v14.16 的另一种方法。我可以确认 POST 请求不会在此版本中挂起。

关于node.js - 如何向 module.exports 路由中的长格式返回请求添加参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69397031/

相关文章:

asp.net-mvc - .NET MVC 获取路由模板

parameters - Yii2: Controller 操作未从路由接收参数

javascript - 如何在jade文件中实现表单按钮

mysql - Hibernate数据库连接错误

node.js - 如何编写测试以在 node.js 中正常关闭期间检查行为?

python - 通过 REST 将 Swift 数据发送到服务器并执行 Python 代码

json - 如何使用curl 发布到REST/JSON 服务?

meteor - Iron-router如何确定路由优先级?

javascript - 没有被调用的 Promise 的 Sinon spy

node.js - Node js 中的通用 Socket IO Controller