Was ist die beste Methode, um benutzerdefinierte APIs im Discourse-Forum zu erstellen?
Zum Beispiel: Ich möchte eine GET-Anfrage erstellen, die mir users.count, topics.count und categories.count liefert.
Wie füge ich diese API zum Forum hinzu?
Was ist die beste Methode, um benutzerdefinierte APIs im Discourse-Forum zu erstellen?
Zum Beispiel: Ich möchte eine GET-Anfrage erstellen, die mir users.count, topics.count und categories.count liefert.
Wie füge ich diese API zum Forum hinzu?
Du musst ein Plugin schreiben. Siehe Einsteigeranleitung zum Erstellen von Discourse-Plugins, Teil 1: Ein einfaches Plugin erstellen
/admin/about.json
Das enthält das meiste, glaube ich. Oder vielleicht ist es nur /about.json.
Die Daten sind nicht ganz identisch, daher möchte ich eine benutzerdefinierte JSON-API erstellen.
Ich habe GitHub - discourse/discourse-subscriptions: A Discourse plugin that allows payments and subscription management via Stripe. · GitHub als Vorlage für das Hinzufügen eines Modells verwendet (ein vollständiges Modell ist nicht erforderlich, aber discourse-subscriptions/config/routes.rb at main · discourse/discourse-subscriptions · GitHub zeigt ein Beispiel, wie man eine Route hinzufügt. Das und add_to_class sind fast alles, was du wissen musst. Viel Erfolg!
Danke @pfaffman
Ich werde mich darum kümmern.
Ich konnte keine benutzerdefinierte Seite/API über das Plugin erstellen.
Gibt es einen Anfängerleitfaden, dem ich folgen könnte, oder einen Artikel, der die grundlegenden Schritte zeigt?
Ich habe die Discourse-Anleitung befolgt und konnte Einstellungen zum Plugin hinzufügen, aber keine neue Seite erstellen.
@pfaffman
Ich habe das Subscriptions-Plugin als Vorlage für ein eigenes Plugin verwendet. Der Plugin-Generator erstellt ein Plugin mit einer neuen Route. Das ist kompliziert, da Sie sowohl die Rails- als auch die Ember-Komponenten koordinieren müssen. Wenn Sie nur eine Rails-(API)-Route hinzufügen möchten, ist das nicht allzu schwierig. (Andere könnten sagen, dass das Hinzufügen einer reinen Ember-Route einfach ist.)
Benötigen Sie eine neue Seite, die im Browser gerendert wird, oder nur das Backend?