Wie erstelle ich eine Data Explorer-Abfrage mit den APIs?

Ich bin dabei, eine Abfrage mit dem Data Explorer und den APIs zu erstellen. Ich habe Schwierigkeiten, den eigentlichen API-Aufruf zum Erstellen einer Abfrage zu finden.

Es gibt einen Endpunkt zum Ausführen der Abfrage /admin/plugins/explorer/queries/\u003cquery_id\u003e/run; ich sehe jedoch nicht, wie ich sie erstellen kann.

Kann mir jemand helfen?

Haben Sie versucht, die Discourse-API zu Reverse-Engineering?

1 „Gefällt mir“

Vielen Dank für das Teilen des Artikels Reverse engineer the discourse API;

Ich habe ihn durchgesehen und festgestellt, dass zwei separate Aufrufe erforderlich sind.

Der erste sollte der POST-Aufruf an /admin/plugins/explorer/queries sein, der die ID generiert, die mit der Abfrage verknüpft ist.

Zweitens muss der PUT-Aufruf an /admin/plugins/explorer/queries/id erfolgen, um die Standardabfrage zu bearbeiten.

Ich frage mich jedoch, ob es eine Möglichkeit gibt, die Abfrage (durch einen einzigen API-Aufruf) direkt zu erstellen, ohne die ID zu kennen.

Lassen Sie mich wissen, ob das möglich ist.

Sie sollten in der Lage sein, eine POST-Anfrage mit denselben Payload-Werten wie PUT zu stellen.
Haben Sie es versucht?

1 „Gefällt mir“

Hier ist die Abfrage, die ich bei einem POST-API-Aufruf versucht habe.

curl -X POST https://api-discourse-XXXXXXXXXXXXX/admin/plugins/explorer/queries
-H “Content-Type: multipart/form-data;”
-H “Api-Key: 46811cc32XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”
-H “Api-Username: abcdefg2”
-F ‘query={“name”:“test1234”, “sql”:“SELECT * FROM topics”}’

Ich erhalte jedoch eine Fehlermeldung wie unten.

{“status”:500,“error”:“Internal Server Error”}%

Ich bin mir nicht sicher, was falsch sein könnte.

Ich denke, der richtige Weg ist der folgende:

-F 'query[name]=test1234'
-F 'query[sql]=SELECT * FROM topics'
2 „Gefällt mir“

Danke @Arkshine für die Hilfe.

Es hat funktioniert..!!

1 „Gefällt mir“