¿Cómo puedo llamar a APIs de terceros en Discourse?

Hola,

Me pregunto si existe alguna forma de llamar a una API personalizada de terceros creada en Node.js desde Discourse.

Agradecería cualquier retroalimentación.

Gracias.

No debería importar en qué lenguaje esté escrito el API, si toda la interacción ocurre a través de HTTP.

Probablemente necesites escribir algunas llamadas AJAX en JavaScript dentro de un componente de tema, o, si es apropiado, realizar llamadas HTTP en nuevo código de plugin que escribas en Ruby utilizando una gema adecuada como Excon o Httparty.

Gracias por la respuesta @merefield, aprecio tu retroalimentación.
Soy nuevo en el desarrollo de Discourse. Anteriormente, he trabajado en NodeBB, un CMS comunitario basado en Node.js. Allí realicé muchas personalizaciones (creé una API personalizada para obtener datos de tickets de Zoho, recuperé listas de videos de Vimeo, entre otras cosas). Por lo tanto, quiero hacer lo mismo o necesito crear las mismas API(s) en Discourse y mostrar los datos de la respuesta en algunas páginas estáticas para el usuario.

Gracias.

Utiliza el backend para realizar la llamada:

  • si necesitas que sea segura,
  • si necesitas que el backend procese el resultado
  • si la(s) llamada(s) puede(n ser de larga duración

Si es de larga duración, colócalo en un Job.

Esto requerirá algo de Ruby en un Plugin y una de las gemas mencionadas anteriormente.

No es necesariamente tan fácil adentrarse en el desarrollo de plugins para Discourse; es una plataforma grande, compleja y con opiniones definidas, pero hay buenas guías oficiales aquí y MUCHOS plugins de código abierto existentes para revisar (consulta Customization > Plugin y los enlaces a GitHub). Intenta encontrar uno que haga algo similar y observa cómo se resuelve en el código.

Si es superficial, considera un Theme Component. Consulta las guías de desarrollo de temas aquí.

Observa ejemplos, como este: discourse-tc-quote-of-the-day/get-quote.js.es6 at master · merefield/discourse-tc-quote-of-the-day (github.com)

De acuerdo, @merefield, lo estoy revisando. Agradezco tu comentario.