当前位置: 首页 > 面试题库 >

从NodeJS内部调用Express Route

萧辰沛
2023-03-14
问题内容

我的API有ExpressJS路由,我想从NodeJS内调用它

var api = require('./routes/api')
app.use('/api', api);

在我的 ./routes/api.js 文件中

var express = require('express');
var router = express.Router();
router.use('/update', require('./update'));  
module.exports = router;

因此,如果我想/api/update/something/:withParam从前端调用其所有查找内容,但是我需要从NodeJS脚本的另一个方面进行调用,而不必在第二个位置再次重新定义整个函数

我曾尝试从内部使用HTTP模块,但出现“ ECONNREFUSED”错误

http.get('/api/update/something/:withParam', function(res) {
   console.log("Got response: " + res.statusCode);
   res.resume();
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});

我了解Express背后的想法是创建路线,但是如何在内部调用它们


问题答案:

处理此问题的“常规”或“正确”方法是让您要调用的函数本身脱离所有路由定义。也许在自己的模块中,但不一定。然后在任何需要的地方调用它。像这样:

function updateSomething(thing) {
    return myDb.save(thing);
}

// elsewhere:
router.put('/api/update/something/:withParam', function(req, res) {
    updateSomething(req.params.withParam)
    .then(function() { res.send(200, 'ok'); });
});

// another place:
function someOtherFunction() {
    // other code...
    updateSomething(...);
    // ..
}


 类似资料:
  • 问题内容: 为了娱乐并更好地学习Go,我正在尝试在Go中重新实现抗原。 问题是:是shell内置函数,所以我不能用 function 调用它,因为它希望在中有可执行文件。 我怎样才能做到这一点?并且,是否有可能使go程序内部的程序影响用户shell? 问题答案: 您可以直接在终端设备中编写命令。但是,要做到这一点,首先您需要知道哪个设备正在使用该用户。执行程序的脚本可能是解决方案。 然后,程序必须

  • 问题内容: 如何在Java中调用node.js并将console.log值保存在String变量中? 问题答案: Java应用程序可能与正在运行的Node.JS应用程序进行通信。例如,您可以在可用端口上运行Node.JS应用,而Java应用可以通过tcp套接字与之通信。 http://nodejs.org/api/net.html 或者,您可以创建一个http服务器并公开Java应用程序可以使用的

  • 这个包的主要用途就是在 API 内部执行请求。它允许你在可用的 API 基础上构建你的应用。内部请求也可以返回原始数据,而不是原始响应对象,这意味着你可以获得与之相关的所有语法糖。 我们需要构建一个分发器实例来发起内部请求。 $dispatcher = app('Dingo\Api\Dispatcher'); 我们现在可以用标准的 HTTP 进行内部请求. Route::get('/', func

  • 问题内容: 我认为这是异步的问题,但我不知道解决方案。 我的问题是,如果我尝试在函数外部访问它,则返回undefined,并且我不知道如何在页面上显示表格。 问题答案: 问题是Selling.find是异步的,可能在执行this.table = table时尚未完成。尝试类似以下的方法。 这将确保在获取结果并填充表之后才使用表。

  • 问题内容: 我正在尝试编写一个调用Microsoft Graph API的简单Azure函数。但是我无法使access_token工作。这是我所做的: 通过Azure门户创建了一个新的Azure Function应用 打开“ App Service Authentication”设置,并指示其使用AAD登录(管理模式为Express)。 将应用配置为具有Microsoft Graph的委派权限,例

  • 问题内容: 我有一个通常从命令行启动的Java程序。从命令行启动后,Java程序将一直运行直到被按下Ctrl + C退出或杀死另一个脚本中的命令为止。Java程序向控制台输出错误消息(如果有)。 现在,我想开发基于Express的NodeJs Web应用程序。当用户单击链接(运行)时,单击处理程序将调用Ajax请求,这将导致后端NodeJs脚本运行该Java程序(如果尚未运行)。另一个链接(停止)