В чем разница между robot.router и robot.http?

Я унаследовал приложение coffeescript hubot. Я не могу найти форум или какие-либо другие ответы на мой вопрос за пределами readme и учебника, поэтому я спрашиваю здесь.

Я погуглил этот вопрос и не могу найти ответ.

В чем разница между robot.router и robot.http? Кажется, что оба принимают get, put, delete и т. Д. И URL. Мое приложение использует оба, но, на мой взгляд, я не могу сказать разницу.

Похоже, что маршрутизатор работает Express, а http - это что-то доморощенное. Имеет ли это смысловой смысл для клиента?

1 ответ

Решение

Мне тоже нелегко найти хорошую документацию, но мне удалось кое-что понять из документа Hubot Scripting. Если вы будете искать на странице "robot.router" и "robot.http", вы обнаружите следующие определения:

robot.http

Это для выполнения HTTP-вызовов к другим веб-службам (аналогично jQuery AJAX или Axios)

Hubot может выполнять HTTP-вызовы от вашего имени для интеграции и использования сторонних API. Это может быть сделано через экземпляр node-scoped-http-client, доступный по адресу robot.http. Самый простой случай выглядит так:

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

robot.router

Это экспресс- сервер. Это HTTP-слушатель для принятия и ответа на HTTP-запросы.

Hubot включает поддержку экспресс-веб-фреймворка для обслуживания HTTP-запросов. Он прослушивает порт, указанный переменными среды EXPRESS_PORT или PORT (предпочтительно в этом порядке), и по умолчанию равен 8080. Экземпляр экспресс-приложения доступен на robot.router. Его можно защитить с помощью имени пользователя и пароля, указав EXPRESS_USER и EXPRESS_PASSWORD. Он может автоматически обслуживать статические файлы, установив EXPRESS_STATIC.

Чаще всего это используется для предоставления конечных точек 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'
Другие вопросы по тегам