我继承了一个coffeescript hubot应用程序。在自述文件和教程之外,我找不到论坛或我的问题的任何其他答案,所以我在这里问。
我已经用谷歌搜索了这个问题,但找不到答案。
robot.router和robot.http有什么区别?两者都似乎需要获取,放置,删除等和一个URL。我的应用程序同时使用两者,但在我看来,我无法分辨出区别。
看起来路由器正在运行快速,而http是土生土长的东西。这会对客户端产生语义差异吗?
我也很难找到好的文档,但设法从 Hubot 脚本文档中获得了一些见解。如果您在页面上搜索"robot.router"和"robot.http",您会遇到以下定义:
机器人.http
这是为了对其他Web服务进行HTTP调用(类似于jQuery AJAX或Axios)
Hubot可以代表您进行HTTP调用,以集成和使用第三方API。这可以通过 robot.http 上提供的 node-scoped-http-client 实例来实现。最简单的情况如下所示:
robot.http("https://midnight-train") .get() (err, res, body) -> # your code here
机器人路由器
这是一个快速服务器。它是一个HTTP侦听器,用于接受和响应HTTP请求
Hubot 包括对快速 Web 框架的支持,以提供 HTTP 请求。它侦听由 EXPRESS_PORT 或 PORT 环境变量指定的端口(按该顺序首选),默认为 8080。快速应用程序的实例可在robot.router上找到。可以通过指定EXPRESS_USER和EXPRESS_PASSWORD来使用用户名和密码对其进行保护。它可以通过设置EXPRESS_STATIC自动提供静态文件。
最常见的用途是为服务提供 HTTP 端点,并推送到 webhook,并让这些端点显示在聊天中。
module.exports = (robot) -> # the expected value of :room is going to vary by adapter, it # might be a numeric id, name, token, or some other value robot.router.post '/hubot/chatsecrets/:room', (req, res) -> room = req.params.room data = if req.body.payload? then JSON.parse req.body.payload else req.body secret = data.secret robot.messageRoom room, "I have a secret: #{secret}" res.send 'OK'