Выполнение внешнего HTTP-запроса из Discourse

Привет!
Я планирую заменить существующий сайт на Discourse. Проблема в том, что бэкенд этого сайта содержит общую логику, используемую даже для мобильного приложения, а также специфические действия для самого сайта.
Поскольку мне всё равно нужно поддерживать активный сервер с этой логикой, я задаюсь вопросом: можно ли отправлять HTTP-запросы из Discourse на внешний сервер? Идеальный вариант — чтобы при наступлении определённых событий в Discourse автоматически отправлялся HTTP-запрос на мой сервер.

Возможно ли это на самом деле? Если да, есть ли где-то руководство?

Также можно ли создавать темы со специфическими полями и передавать их в составе HTTP-запроса?

Это вполне возможно, напишите плагин.

Вот пример плагина, который делает внешний вызов при обработке onebox.

Похоже, вы хотите реализовать концепцию вебхуков. Вам нужно настроить вебхуки, которые будут отправлять запросы на указанные URL-адреса при наступлении определённого события. Если это так, ознакомьтесь с этим материалом:

Да, если связь односторонняя, предложение @fzngagan лучше.

Если же нужно получить и обработать ответ каким-то сложным образом, то REST-вызов в плагине может быть предпочтительнее.

Спасибо всем за ответы. Нет, я ищу способ создать полноценный REST API-клиент, а не простой webhook.
То, что я пытаюсь воспроизвести, — это своего рода маркетплейс, где пользователи могут публиковать свои товары, а затем принимать различные предложения от других пользователей. Логика маркетплейса должна оставаться на сервере, но фронтендом будет Discourse, поэтому он должен обновляться в соответствии с данными на сервере.

Честно говоря, я не знаю, что лучше сделать в этой ситуации, поэтому ищу советы и ссылки!

Также я отправляю вам ссылку на сайт (он на итальянском), чтобы вы лучше поняли, что я пытаюсь мигрировать.

Я думаю, что здесь требуется некоторое уточнение касательно роли, которую будет играть Discourse. Как ваш вариант использования связан с обсуждениями/разговорами? Что будет выполняться в Discourse, а что — на вашем сервере?

Это довольно общее утверждение. Сам по себе Discourse — это целая система. Какие данные вы планируете отображать в Discourse, которые поступают из вашего другого сервера или синхронизируются с ним?

Исходя из предоставленной вами информации, это определённо можно реализовать с помощью плагина. Существуют интеграции для WordPress, GitHub и других платформ, которые могут выполнять схожие задачи. Но это лишь мои догадки, основанные на прочтении между строк.

Если вы хотите понять, как создавать плагины, вот отличная подборка ссылок от @merefield:

Также рекомендую эту тему:
https://meta.discourse.org/t/creating-routes-in-discourse-and-showing-data/48827/19?u=fzngagan

Хорошо, позвольте мне лучше объяснить идею с самого начала:

Я хочу создать маркетплейс, где пользователи могут продавать или обменивать свои товары. В идеале каждый раз, когда пользователь создает пост, он должен заполнять определенные поля для описания этого предмета. Другие пользователи должны иметь возможность обсуждать цену этого товара и делать ставки с помощью специальных кнопок и полей (которые должны быть добавлены с помощью Discourse).

Исходя из этой идеи, есть два пути, по которым я могу пойти (если Discourse это позволяет):

  1. Каждый раз, когда в Discourse происходит взаимодействие, связанное с такими предложениями, я хотел бы, чтобы мой сервер обновлял или отправлял данные.

Или, если это невозможно:

  1. Я хотел бы перенести всю логику в Discourse, используя его внутреннюю базу данных, и создать REST API-сервис на базе Discourse, который позволит мобильному приложению подключаться и использовать этот сервис со смартфона.

Какая идея лучше и быстрее реализуется с помощью Discourse?

Это предпочтительный подход. Дело в том, что Discourse не является торговой площадкой, и нет смысла настраивать его так, чтобы он вел себя как таковая.

Также, вы хотите написать код самостоятельно или нанять кого-то для этого?

Отлично, значит, если это возможно сделать в Discourse, какой будет лучший способ?

Поскольку это не предназначено для получения дохода и у меня есть опыт в программировании, я планирую написать всё сам.

Я думаю, вам стоит прочитать ссылки, приведенные выше. Кроме того, этот плагин для WordPress выполняет аналогичную задачу, но для WordPress, так что вы можете ознакомиться и с ним.