¿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.

1 me gusta

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.

Usa el backend para realizar la llamada:

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

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

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

No necesariamente es tan fácil adentrarse en el desarrollo de plugins de Discourse; es una plataforma grande, compleja y con opiniones muy definidas, pero hay buenas guías oficiales aquí y MUCHOS plugins de código abierto existentes para revisar (consulta #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 algo superficial, considera un Componente de Tema. Consulta las guías de desarrollo de temas aquí.

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

3 Me gusta

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

1 me gusta