Nodejs可以向我自己的应用程序发出GET请求吗?

时间:2015-10-08 15:28:15

标签: node.js http routes request crontab

我在我的应用程序中有一条路线,我已经定义了以几个cron作业的风格运行的任务。我知道这可以在必要时通过外部设备的GET请求触发(这是理想的)。 (仅供参考:我将在此路线中添加用于安全目的的验证。)

router.get('/cron', function(req) {
  /**
   *
   * Do cron things...
   */
  task();
});

我想知道的是,如果我有必要在必要时通过我自己系统的GET请求触发此操作吗?

真正有用的是使用像node-crontab这样的npm模块重复使用上面的相同路由,并且每隔几个小时就向路由发出一个请求。

var doEveryThirtyMinutes = crontab.scheduleJob("*/30 * * * *", function(){
  /**
   * Make GET request to '/cron' controller.
   * Live a happy life. 
   */
});

即使在npm request module文档中,我找不到有关如何发出该请求的任何信息(到我的同一系统)。有没有理由不这样做?我错过了什么吗?这是一种不好的做法吗?

这种设置非常有用的原因是我通过req对象的扩展连接到我的数据库,并且不想实现新的连接模块。此外,我已经为成功/不成功的路由执行实现了一个日志记录过程,所以我也可以重用它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

是的,您可以向自己的应用程序发出get请求。您可以像任何其他请求一样发出此请求,只需使用您的应用程序的主机和端口。

如果你想从你的操作系统中获取主机名,你可以使用require('os')。hostname https://nodejs.org/api/os.html#os_os_hostname

您不会这样做的原因是您已经在您的应用程序中,因此您不需要通过它的网络接口进行通信。