robot.router和robot.http之间的区别是什么?

时间:2018-03-21 21:05:39

标签: node.js coffeescript hubot

我继承了coffeescript hubot应用程序。我无法在自述文件和教程之外找到论坛或任何其他问题的答案,所以我在这里问。

我搜索了这个问题但无法找到答案。

robot.router和robot.http有什么区别?两者似乎都采取获取,放置,删除等URL和URL。我的应用程序使用了两者,但在我看来,我无法区分它们。

看起来路由器正在运行express而http是本土的东西。这是否会对客户产生语义差异?

1 个答案:

答案 0 :(得分:1)

我也很难找到好的文档,但设法从Hubot Scripting doc获得了一些见解。如果您在页面中搜索" robot.router"和" robot.http"你会遇到以下定义:

robot.http

这是为了对其他网络服务进行HTTP调用(类似于jQuery AJAXAxios

  

Hubot可以代表您进行HTTP呼叫以进行集成&使用第三方API。这可以通过robot.http中提供的node-scoped-http-client实例实现。最简单的情况如下:

robot.http("https://midnight-train")   
  .get() (err, res, body) ->
  # your code here

robot.router

这是Express服务器。它是用于接受和响应HTTP请求的HTTP侦听器

  

Hubot包括对快速Web框架的支持,以提供HTTP请求。它侦听由EXPRESS_PORT或PORT环境变量指定的端口(按此顺序首选),默认为8080.在robot.router中可以使用快速应用程序的实例。可以通过指定EXPRESS_USER和EXPRESS_PASSWORD使用用户名和密码进行保护。它可以通过设置EXPRESS_STATIC来自动提供静态文件。

     

最常见的用途是为带有webhooks的服务提供HTTP端点,并将其显示在聊天中。

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'