REST-APIs werden bei Entwicklern immer beliebter, da sie ein Kommunikationsmittel zwischen ihren Anwendungen und Webdiensten wie Twitter, MailChimp oder GitHub darstellen. Die Ankunft derREST API Wordpress erhältlich durch Plugin (aber im Kernel für Dezember geplant) bietet eine geeignete Gelegenheit, die bereits in WordPress vorhandene HTTP-API zu studieren. In diesem Tutorial werde ich Sie durch die WordPress-HTTP-API führen und Ihnen zeigen, wie Sie sie verwenden.

HTTP-API

Die WordPress-HTTP-API ist eine Möglichkeit, Nachrichten über das HTTP-Protokoll von einer Anwendung eines Webdienstes oder einer anderen Site an WordPress und umgekehrt zu übertragen. Um zu dieser Seite zu gelangen, muss Ihr Browser eine HTTP-Anfrage an die Server von BlogPasCher senden. Sie antworteten mit einer Antwort, die das enthielt, was Sie gerade sehen. Die WordPress-REST-API ermöglicht nun die Teilnahme an einem solchen Anforderungs- / Antwortsystem, wodurch eine Entkopplung zwischen der grafischen Oberfläche und dem Kern der Plattform ermöglicht wird. Um dies nutzen zu können, müssen Sie lernen, wie Sie die WordPress-HTTP-API verwenden, die eine Reihe von Methoden und Dienstprogrammen zum Senden von HTTP-Anforderungen bietet.

HTTP-Methoden und -Ressourcen

Das HTTP-Protokoll konzentriert sich auf Methoden und Ressourcen. Die Ressourcen Definieren Sie, worauf Sie reagieren möchten, und die Methoden definieren die Art der durchzuführenden Aktion. Praktischer ist die Ressourcen sind URLs zu Objekten im Internet (zum Beispiel dieser Artikel). Bezüglich der Methoden gibt es eine Reihe von Methoden, von denen die wichtigsten sind:

- BESTELLE : um a abzurufen Ressource
- jetzt lesen : um ein zu erstellen Ressource
- SETZEN : a ändern Ressource
- LÖSCHEN : Eine Ressource löschen

Beispielanforderung mit der HTTP-API

Lassen Sie uns zunächst sehen, wie Sie eine einfache Anfrage mit der HTTP-API senden. Wir werden die Funktion verwenden wp_remote_get um den Google-Server abzufragen und die Startseite abzurufen. Diese Funktion verwendet zwei Parameter, von denen der erste die Ressource und der zweite eine Liste von Optionen zum Angeben von Details ist. Lassen Sie uns ohne weiteres Maßnahmen ergreifen.

$ test = wp_remote_get ('http://google.com'); Echo " "; 
var_dump ($ test); 
Echo " ";

die Rückkehr wp_remote_get ist in der Variablen enthaltenen $ testund stellt den Inhalt der Startseite dar, die Google auf unsere Anfrage hin zurückgegeben hat. Linie var_dump ($ test); Mit dieser Option können Sie die in der Antwort zurückgegebenen Elemente anzeigen.

Der Abschnitt Überschriften Enthält zusätzliche Informationen zu den Nachrichten. Bei einigen REST-APIs müssen Sie bestimmte Informationen in an sie gerichteten Abfragen senden.

Abschnitt Antwort enthält den Statuscode und die Beschreibung der Antwort. Möglicherweise haben Sie von einem 404-Fehler für nicht gefundene Seiten, 501 Serverfehlern oder 301- und 302-Weiterleitungen gehört. Diese Nummern sind Fehlercodes. Die W3.org-Site enthält eine Liste aller HTTP-Fehlercodes und deren Beschreibung.

Abschnitt Körper enthält die eigentliche Antwort und ist der Ort, an dem Sie nachsehen müssen, wann alles gut läuft. In diesem Beispiel erhalten wir HTML, das der Google-Startseite. REST-APIs geben häufig Antworten im JSON-Format zurück. Wie wir sehen werden, müssen Sie bei einigen APIs eine Zeichenfolge in den Hauptteil Ihrer Anfrage aufnehmen.

Abschnitt Cookies enthält alle Cookies, die mit der Nachricht empfangen wurden.

Wie Sie selbst sehen können, ist das Senden von Anfragen über die WordPress-HTTP-API nicht schwierig. Auf der anderen Seite kann es bei REST-APIs schwierig sein, dass sie hinsichtlich der Details der gesendeten Informationen wählerisch sind, was für die Konsistenz gut ist. Lesen Sie daher die Dokumentation der von Ihnen verwendeten APIs sorgfältig durch.

Query-APIs

Es ist klar, dass die meisten von Ihnen die HTTP-API verwenden, um mit REST-APIs zu interagieren. Sie müssen daher den zweiten Parameter der Funktion verwenden wp_remote_get Um eine bestimmte Anzahl von Dingen zu klären, Sie zu authentifizieren, Ihre Ergebnisse zu verfeinern usw. Beginnen wir mit einem einfachen Beispiel, wie dem Abrufen von Stecknadeln von einer Pinterest-Wand. Jede API mit Selbstachtung erfordert eine Authentifizierung, die wir hier jedoch umgehen Generieren eines Zugriffstokens (Zugangstoken). Der Code !

$ request = wp_remote_get ('https://api.pinterest.com/v1/boards/ / home-office / pins /? access_token = '); $ pins = json_decode ($ request ['body'], true); if (! empty ($ pins ['data'])) {echo ' '; foreach ($ pins ['data'] als $ pin) {echo ' '. $ pin ['note']. ' '; } echo ' '; }}

Stellen Sie sicher, dass Sie in der ersten Zeile ersetzenBenutzername-Board> durch die ID der Pinterest-Wand und  durch das Zugriffstoken, das Sie selbst generiert haben. Die Antwort ist in JSON, daher wird sie in der zweiten Zeile dekodiert. Die Stifte sind in enthalten $ pins ['data']Also gehen wir es durch und schreiben die Stecknadeln in eine Liste. Sie können diesen Code in eine Vorlagendatei Ihres Themas einfügen und das Ergebnis sehen.

Authentifizierung

Nehmen wir für diesen Teil die REST-API-Authentifizierung von Twitter als Beispiel.

Wenn Sie mit einer API beginnen, ist es sehr wichtig, die Dokumentation sorgfältig zu lesen und gründlich zu verstehen. Authentifizierung ist eines der Dinge, auf die Entwickler häufig stoßen. Eine der Ursachen ist das falsche Lesen der Dokumentation. Wenn Sie es gewohnt sind, mit REST-APIs zu arbeiten, können Sie direkt zum Abschnitt springen Authentification. Bei Twitter ist es leicht, die Dokumentationszeile zu übersehen, die besagt, dass Sie die Zeichenfolge in den Textabschnitt Ihrer Abfrage aufnehmen müssen grant_type = client_credentials. Wenn Sie es nicht einschließen, führt dies zu einem vollständigen Fehler, selbst wenn der gesamte Rest Ihres Codes in Ordnung ist. Stellen Sie immer sicher, dass Sie die Dokumentation gelesen und verstanden haben. Nachdem Sie dies für den Fall von Twitter getan haben, können Sie eine POST-Anforderung wie diese erstellen, die ein Zugriffstoken generiert:

$ key = base64_encode (urlencode ("PKI865f6uvGZA6xvFTtb8IAA: i4pmOV0duXJEgty95Ghth89dh5wDIqfJOovKjs92ei878")); $ request = wp_remote_post ('https://api.twitter.com/oauth2/token', Array ('headers' => array ('Authorization' => 'Basic'. $ key, 'Content-Type' => ' application / x-www-form-urlencoded; Zeichensatz = UTF-8 '),' body '=>' grant_type = client_credentials ',' httpversion '=>' 1.1 ')); $ token = json_decode ($ request ['body']); Echo " "; var_dump ($ token); echo" ";

Das erste ist, ein Zugriffstoken und eine geheime Zeichenfolge zu codieren (die angezeigten sind ungültig). Formulieren Sie dann die Anfrage selbst. Sie können sehen, dass wir hier gemäß den Empfehlungen von Twitter zwei Überschriften hinzugefügt haben Genehmigung et Content-Type, wir haben die Kette enthalten grant_type = client_credentials et httpversion. Ohne all dies wären wir nicht in der Lage, das erforderliche Zugriffstoken zu generieren, um zukünftige Anforderungen an die Twitter-API zu stellen. Ergebnis:

wp-http-api-twitter-Token

Nachdem Sie Ihr Zugriffstoken haben, ist es eine gute Idee, es zwischenzuspeichern, da es eine ganze Weile gültig ist. Wenn Sie es für jede Anfrage von der REST-API von Twitter abrufen, wird dies Ihrem Unternehmen nichts nützen. codiert. Der Begriff der Transienten entspricht gut diesem Szenario, lassen Sie es uns implementieren.

$ token = get_transient ('twitter_access_token'); $ token = (leer ($ token))? get_twitter_access_token (): $ token; $ request = wp_remote_get ('https://api.twitter.com/1.1/followers/ids.json?screen_name= & count = 5 ', array (' headers '=> array (' Authorization '=>' Bearer '. $ token,' Content-Type '=>' application / x-www-form-urlencoded; charset = UTF-8 ' ), 'httpversion' => '1.1')); $ token = json_decode ($ request ['body']);

Diese Anfrage sollte 5 von Ihren Followern erhalten, wenn Sie ersetzen durch Ihren Twitter-Benutzernamen. In diesem Code erhalten wir unser Zugriffstoken von einem Transienten. Ist letzteres nicht vorhanden, verwenden wir die Funktion get_twitter_access_token (die Sie aus unserem vorherigen Beispiel entwerfen können). Beachten Sie, dass diese Funktion das Zugriffstoken in einem Transienten hinzufügen muss.

Funktionen des WordPress-HTTP-API-Dienstprogramms

Es gibt 4 Funktionen, mit denen Sie Abfragen ausführen können. Jene sind wp_remote_get, wp_remote_post, wp_remote_head, wp_remote_request. Der letzte ist verallgemeinert, dh Sie können ihn mit jeder HTTP-Methode verwenden.

Es gibt auch 5 Funktionen, um einen Teil einer Antwort abzurufen. Jene sind wp_retrieve_body, wp_retrieve_header, wp_retrieve_headers, wp_retrieve_response_code, wp_retrieve_response_message.

Verwenden Sie die HTTP-API-Funktionen so oft wie möglich, wenn Sie damit arbeiten, damit andere Entwickler Ihren Code leicht verstehen können.

Die Entwicklung in WordPress bewegt sich entscheidend in Richtung eines API-gesteuerten Ansatzes. Um im Bad zu bleiben, ist jetzt der richtige Zeitpunkt, um zu lernen, wie man die verschiedenen APIs von WordPress verwendet.

Verwenden Sie bereits eine WordPress-API? Warum und wie machst du das? Hast du welche? Tricks um sie noch einfacher zu machen? Teilen Sie es uns in unserem Kommentarbereich mit.