Как вызвать API сторонних сервисов в Discourse

Привет,

Интересует, есть ли способ вызывать кастомные API сторонних сервисов, созданные на Node.js, в Discourse?

Буду признателен за обратную связь.

Спасибо.

Не должно иметь значения, на каком языке написан API, если все взаимодействие происходит через HTTP.

Вам, скорее всего, потребуется написать несколько AJAX-вызовов на JavaScript в компоненте темы или, если это уместно, выполнить HTTP-запросы в новом коде плагина, написанном на Ruby, используя подходящий Ruby-гем, например Excon или Httparty.

Спасибо за ответ, @merefield. Я ценю вашу обратную связь.
Я новичок в разработке для Discourse. Ранее я работал с NodeBB — CMS на базе Node.js. Там я выполнял множество кастомизаций: создавал собственные API для получения данных о тикетах из Zoho, извлекал списки видео с Vimeo и многое другое. Теперь я хочу сделать то же самое или создать аналогичные API в Discourse и отображать полученные данные на статических страницах для пользователей.

Спасибо.

Используйте бэкенд для выполнения вызова:

  • если вам нужна безопасность,
  • если бэкенду необходимо обработать результат,
  • если вызов(ы) могут выполняться длительное время.

Если вызов выполняется длительное время, поместите его в Job.

Для этого потребуется некоторый код на Ruby в плагине и одна из упомянутых выше библиотек.

Разработка плагинов для Discourse не всегда проста: это большая, сложная и имеющая собственные предпочтения платформа. Однако здесь есть хорошие официальные руководства и множество существующих плагинов с открытым исходным кодом, которые можно изучить (см. тег #plugin и ссылки на GitHub). Попробуйте найти плагин, решающий похожую задачу, и посмотрите, как это реализовано в коде.

Если изменения носят поверхностный характер, рассмотрите возможность использования компонента темы. Ознакомьтесь с руководствами по разработке тем.

Посмотрите примеры, например этот: discourse-tc-quote-of-the-day/get-quote.js.es6 в ветке master проекта merefield/discourse-tc-quote-of-the-day (github.com)

Хорошо, @merefield, я разбираюсь в этом. Благодарю за обратную связь.