Wie kann ich Drittanbieter-APIs in Discourse aufrufen?

Hallo,

ich frage mich, ob es eine Möglichkeit gibt, eine in Node.js erstellte benutzerdefinierte API von Drittanbietern in Discourse aufzurufen.

Feedback ist willkommen.

Vielen Dank

Es sollte keine Rolle spielen, in welcher Sprache die API geschrieben ist, solange alle Interaktionen über HTTP stattfinden.

Sie werden wahrscheinlich einige JavaScript-Ajax-Aufrufe in einer Theme-Komponente schreiben müssen oder, falls angemessen, HTTP-Aufrufe in neuem Plugin-Code in Ruby mit einer geeigneten Ruby-Gem wie Excon oder Httparty ausführen.

Danke für die Antwort @merefield, ich schätze dein Feedback.
Ich bin neu in der Discourse-Entwicklung. Zuvor habe ich an NodeBB gearbeitet, einem Community-CMS auf Basis von Node.js. Dort habe ich viele Anpassungen vorgenommen (z. B. eine benutzerdefinierte API erstellt, um Ticketdaten von Zoho abzurufen, die Liste der Vimeo-Videos abzufragen und vieles mehr). Ich möchte daher dasselbe tun oder entsprechende APIs dafür erstellen und die Antwortdaten auf einigen statischen Seiten für den Nutzer rendern.

Danke

Nutzen Sie das Backend für den Aufruf:

  • wenn dies sicher sein soll,
  • wenn das Backend das Ergebnis verarbeiten muss,
  • wenn der Aufruf (die Aufrufe) langandauernd sein kann.

Bei langandauernden Vorgängen legen Sie diese in einen Job ab.

Dafür wird etwas Ruby in einem Plugin und eine der oben genannten Gems benötigt.

Die Entwicklung von Discourse-Plugins ist nicht unbedingt einfach; es handelt sich um eine große, komplexe und sehr eigenwillige Plattform. Dennoch gibt es hier gute offizielle Anleitungen und eine HAUFEN von bestehenden Open-Source-Plugins, die Sie durchsehen können (siehe #plugin und Links zu GitHub). Versuchen Sie, ein Plugin zu finden, das Ähnliches leistet, und schauen Sie sich an, wie die Lösung im Code umgesetzt ist.

Handelt es sich nur um eine oberflächliche Anpassung, erwägen Sie eine Theme-Komponente. Schauen Sie sich die Anleitungen zur Theme-Entwicklung hier an.

Schauen Sie sich Beispiele an, wie dieses: discourse-tc-quote-of-the-day/get-quote.js.es6 at master · merefield/discourse-tc-quote-of-the-day (github.com)

Okay @merefield, ich schaue mir das an. Danke für dein Feedback.