Come posso chiamare API di terze parti in Discourse

Ciao,
mi chiedo se esista un modo per chiamare un’API personalizzata di terze parti creata in Node.js da Discourse.

Apprezzo eventuali feedback.

Grazie

Non dovrebbe importare in quale linguaggio è scritta l’API, se tutte le interazioni avvengono tramite HTTP.

Probabilmente dovrai scrivere alcune chiamate AJAX in JavaScript in un componente del tema, oppure, se appropriato, effettuare chiamate HTTP in un nuovo codice di plugin che scrivi in Ruby, utilizzando una gemma Ruby adatta come Excon o Httparty.

Grazie per la risposta @merefield, apprezzo molto il tuo feedback.
Sono nuovo nello sviluppo di Discourse. In passato ho lavorato su NodeBB, un CMS della community basato su Node.js. Lì ho realizzato molte personalizzazioni (ho creato API personalizzate per recuperare i dati dei ticket da Zoho, per ottenere l’elenco dei video Vimeo e molto altro). Quindi vorrei fare la stessa cosa o creare le stesse API in Discourse e mostrare i dati di risposta in alcune pagine statiche all’utente.

Grazie

Utilizza il backend per effettuare la chiamata:

  • se è necessario che sia sicura,
  • se è necessario che il backend elabori il risultato
  • se la/e chiamata/e può/possono richiedere molto tempo

Se è un’operazione di lunga durata, inseriscila in un Job.

Questo richiederà del codice Ruby in un Plugin e una delle gemme menzionate sopra.

Non è necessariamente molto facile iniziare a sviluppare plugin per Discourse; si tratta di una piattaforma grande, complessa e dalle opinioni ben precise, ma ci sono buone guide ufficiali qui e MOLTI plugin open source esistenti da esaminare (vedi Customization > Plugin e i link a GitHub). Prova a trovare un plugin che faccia qualcosa di simile e osserva come viene risolto nel codice.

Se si tratta di una modifica superficiale, considera un Theme Component. Consulta le guide per lo sviluppo dei temi qui presenti.

Guarda degli esempi, come questo: discourse-tc-quote-of-the-day/get-quote.js.es6 at master · merefield/discourse-tc-quote-of-the-day (github.com)

Va bene @merefield, sto dando un’occhiata. Apprezzo il tuo feedback.