В чем разница между 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'