Eine Operation finden
Das Schema ist maßgeblich für die unterstützte GraphQL-Teilmenge: Operations-Roots, Namen, Argumente, Eingabetypen und Enum-Werte. Beschreibungen liefern Hinweise zur Verwendung, und der GraphQL Explorer zeigt beides an. Für Funktionen, die nur über REST verfügbar sind, verwenden Sie die REST-API-Referenz. Operationsnamen orientieren sich an den REST-Endpunkten, die sie ansprechen, in camelCase.GET /history ist postHistory, GET /analytics/social ist socialAnalytics, POST /post ist createPost.
Queries lesen, Mutations schreiben
Queries sind Lese- und Validierungsvorgänge, die auf unserer Seite nichts ändern. Mutations veröffentlichen oder ändern einen Zustand, starten Vorgänge oder versenden E-Mails. Weder das REST-HTTP-Verb noch die Kosten eines Aufrufs bestimmen den Root:validatePostprüft einen Beitrag, ohne ihn zu veröffentlichen.validateMediaprüft, ob eine Medien-URL erreichbar ist.generatePostist eine Query, weil sich auf unserer Seite nichts ändert. Sie zählt dennoch als API-Aufruf und gibt jedes Mal einen anderen Text zurück. Stellen Sie daher sicher, dass ein Client-Cache oder ein automatisches erneutes Abrufen sie nicht unbemerkt wiederholt.mediaUploadUrlist eine Mutation, weil sie eine Upload-URL für Ihr Konto erstellt.linkAnalyticsist eine Mutation, weil sie einen per E-Mail versendeten Bericht anfordern kann.userBatchist eine Mutation, weil sie einen Exportauftrag startet.
Einen Beitrag erstellen
createPost nimmt ein einziges input-Argument entgegen, sodass der gesamte Beitrag ein Objekt ist:
Argumenttypen
Die meisten Argumente sind gewöhnliche Strings, Zahlen und Booleans. Drei Fälle sollten Sie kennen.Enums
Viele String-Argumente mit einer abgeschlossenen unterstützten Wertemenge sind GraphQL-Enums und werden ohne Anführungszeichen und in Großbuchstaben geschrieben:"instagram". Der Server ordnet jedes akzeptierte Enum genau dem Wert zu, den der zugrunde liegende REST-Controller erwartet – oft, aber nicht immer, ein String in Kleinbuchstaben. Ein ungültiges Enum wird bei der GraphQL-Validierung abgelehnt, bevor die Operation ausgeführt wird, sodass Sie ein Tippfehler nichts kostet.
Manche Argumente tragen in verschiedenen Operationen denselben Namen, akzeptieren aber unterschiedliche Werte, weil sich die Endpunkte tatsächlich unterscheiden. reviews(platform:) akzeptiert nur GMB und FACEBOOK, da dies die einzigen Netzwerke mit Bewertungen sind. Die Autovervollständigung Ihres Clients zeigt für jede Operation die richtige Wertemenge an.
Der JSON-Skalar
Einige Argumente sind alsJSON statt als bestimmter Typ typisiert. Das ist dort der Fall, wo ein Wert berechtigterweise mehr als eine Struktur hat und kein einzelner GraphQL-Typ ihn zutreffend beschreiben könnte:
explainError(code:)akzeptiert215oder“215”, weil Kunden Fehlercodes in beiden Formen vorliegen haben.createPost(input:)verwendet JSON für Felder wiepostundmediaUrls, die gemeinsame Werte oder plattformspezifische Objekte sein können.createAutomation(triggers:, actions:)nehmen Arrays entgegen, deren Felder vomtypedes jeweiligen Eintrags abhängen.boostFacebookPost(interests:)akzeptiert Meta-Interessen-IDs als Strings oder Zahlen.
JSON-Argument ist kein Schlupfloch: Der Resolver validiert es vor der Weiterleitung, sodass ein ungültiger Wert einen Validierungsfehler zurückgibt und keinen API-Aufruf verbraucht.
Optionale Argumente und Nullwerte
Bei optionalen Argumenten und optionalen Feldern innerhalb von Eingabeobjekten wird ein explizitesnull so behandelt, als wäre der Wert weggelassen worden. Null-Elemente innerhalb von Listen bleiben erhalten, wenn der Listentyp sie zulässt.
Antworten lesen
Die meisten Operationen geben einenJSON-Skalar zurück, der den vollständigen REST-Antwort-Envelope enthält. Wählen Sie daher das Root-Feld ohne Unterfelder aus. createPost gibt derzeit ein typisiertes PostResult zurück, wählen Sie also dessen Felder aus:
PostResult enthalten außerdem raw: JSON! mit der vollständigen, unveränderten REST-Antwort:
raw ist dauerhaft vorhanden und sorgt dafür, dass ein neues Feld in der REST-Antwort über GraphQL niemals unerreichbar ist, während wir seine Typisierung nachziehen. Wenn Sie etwas benötigen, das die typisierten Felder nicht bereitstellen, fragen Sie raw ab.
Medien hochladen
Medien-Bytes können nicht über eine GraphQL-Anfrage übertragen werden. Eine GraphQL-Anfrage ist ein einzelnes JSON-Dokument mit einem Limit von 64 KB. Es gibt also kein Feld, das eine Datei akzeptiert, und ein als base64 in der Query kodiertes Bild würde dieses Limit bei allem, was größer als ein Thumbnail ist, überschreiten. Der unterstützte Weg umgeht das Problem vollständig und ist ohnehin schneller als ein Upload über eine API, da Ihre Bytes direkt in den Speicher gehen:-
Fordern Sie eine Upload-URL an:
-
Lesen Sie
data.mediaUploadUrl.uploadUrl,accessUrlundcontentTypeaus dem zurückgegebenen JSON. -
Senden Sie Ihre Datei per
PUTdirekt anuploadUrl, nicht an die Ayrshare-API, und setzen Sie denContent-Type-Header der Anfrage auf den zurückgegebenencontentType. -
Übergeben Sie nach erfolgreichem Upload
accessUrlincreatePost.input.mediaUrls:
uploadUrl als kurzlebige Schreibberechtigung und protokollieren oder veröffentlichen Sie sie nicht. accessUrl ist die Medien-URL, die beim Erstellen des Beitrags verwendet wird.
Sie können auch weiterhin die REST-Upload-Endpunkte verwenden und die resultierenden URLs aus GraphQL referenzieren. Beide Schnittstellen teilen sich dieselbe Medienbibliothek.
Weiterlesen
- Fehler – HTTP-Statuscodes, Fehlerstrukturen und Teilerfolge.
- Limits und Abrechnung – Obergrenzen für die Abfragegröße und wie Anfragen gezählt werden.