WP REST-API Erstellen, Aktualisieren und Löschen von Daten

Im vorigen Teil der Serie haben wir untersucht, wie wir mit der WP-REST-API Inhalte vom Server abrufen können. Wir haben gelernt, Inhalte für verschiedene Ressourcen abzurufen, einschließlich Posts, Post-Meta-Tags, Tags, Kategorien usw. Dies ist eine leistungsstarke Funktion, da dieser Inhalt an beliebigen Stellen innerhalb oder außerhalb von WordPress verwendet werden kann.

Wir haben auch über das gelernt OPTIONEN fordern Sie an, die API selbst zu dokumentieren, indem Sie alle Routen, ihre Endpunkte und ihre jeweiligen Argumente auflisten. Dies verringert die Notwendigkeit, sich auf eine externe Dokumentation für die API zu verlassen, und ermöglicht, dass Änderungen ziemlich schnell erkannt werden, falls die API aktualisiert oder geändert wurde.

Nachdem wir uns diese Features angesehen haben, werden wir uns in diesem Tutorial nun auf die anderen drei Operationen von CRUD konzentrieren, d. H. Das Erstellen, Aktualisieren und Löschen von Daten mithilfe der WP REST-API.

In diesem Tutorial werden wir:

  • analysieren, welche Ressourcen das Erstellen, Aktualisieren und Löschen von Methoden unterstützen
  • lernen, Ressourcen zu erstellen, zu aktualisieren und zu löschen
  • Suchen Sie nach Möglichkeiten, Daten entlang der Anforderung zu senden, um eine Ressource zu erstellen
  • Analyse der Serverantwort und verschiedener Antwortcodes

Beginnen wir mit der Analyse, welche Ressourcen die Methoden zum Erstellen, Aktualisieren und Löschen mithilfe der WP-REST-API unterstützen.

Suchen nach Methoden zum Erstellen, Aktualisieren und Löschen in den Routen

Bevor wir direkt mit der Erstellung und Aktualisierung von Daten mit der WP REST-API beginnen, müssen wir analysieren, welche Routen Erstellungs- und Aktualisierungsmethoden unterstützen. Wir überprüfen dies durch die Routen und die Methoden Eigenschaft in ihren Endpunkten. Dies kann durch Senden eines separaten erfolgen OPTIONEN Anfrage an individuelle Routen, aber eine bequemere Methode ist das Senden einer ERHALTEN Anfrage an die / wp-json Indexroute wie im vorherigen Teil der Serie.

Senden einer ERHALTEN Anfrage an die / wp-json route gibt ein Objekt zurück, das alle Routen und deren Endpunkte in der enthält Routen Eigentum.

In diesen einzelnen Routen können wir prüfen, ob eine bestimmte Ressource unterstützt POST, STELLEN, und LÖSCHEN Methoden. Beginnen wir mit der Analyse der Beiträge Ressource.

Das Beiträge Ressource macht Daten mit den folgenden zwei Routen verfügbar:

/ wp / v2 / posts / wp / v2 / posts / (? P[\ d] +)

Die erste Route zeigt auf die Sammlung des Postobjekts und dessen Methode Eigenschaft ist wie folgt:

"methoden": ["GET", "POST"],

Diese Methoden Eigenschaft zeigt, dass die / Beiträge Route unterstützt ERHALTEN und POST Methoden zum Abrufen und Erstellen von Daten.

Für die / posts / (? P[\ d] +) Route, die auf eine einzelne zeigt Beiträge Ressource, die Methoden Eigenschaft ist wie folgt:

"methoden": ["GET", "POST", "PUT", "PATCH", "DELETE"],

Wie im obigen Code zu sehen, ist der / posts / (? P[\ d] +) Route unterstützt die ERHALTEN, POST, STELLEN, PATCH, und LÖSCHEN Methoden.

Wenn wir beide Wege untersuchen, können wir daraus schließen, dass die / Beiträge route unterstützt das Abrufen und Erstellen von Ressourcen. Und das / posts / (? P[\ d] +) route unterstützt das Abrufen von Ressourcen sowie das Aktualisieren und Löschen. Obwohl es das unterstützt POST Diese Route unterstützt keine Ressourcenerstellung, wie wir in einem Beispiel unten sehen werden.

Daher können Routen, die auf eine einzelne Ressource verweisen, nicht zum Erstellen von Inhalten verwendet werden, obwohl sie das unterstützen POST Methode. Dies liegt daran, dass für diese Routen die POST, STELLEN, und PATCH Methoden werden verwendet, um Inhalte in der WP-REST-API zu aktualisieren.

Lassen Sie uns zum Abschluss dieses Abschnitts die hier gelernten Konzepte zusammenfassen:

  • Wir können prüfen, welche Routen unterstützt werden ERHALTEN, POST, und LÖSCHEN Methoden durch Senden einer OPTIONEN anfordern.
  • Routen, die auf eine einzelne Entität verweisen, können nicht zum Erstellen von Inhalten verwendet werden. Sie werden zum Aktualisieren von Inhalten verwendet, obwohl sie das unterstützen POST Methode.

Nachdem wir verschiedene Routen analysiert haben, können wir nun mit der WP-REST-API Inhalte erstellen Beiträge Ressource.

Beitrag erstellen und aktualisieren

Erstellen Sie einen Beitrag, indem Sie eine Testanforderung von Postman oder einem anderen HTTP-Client senden. Starten Sie dazu Ihren HTTP-Client und senden Sie eine POST Anfrage an die / Beiträge Route. Denken Sie jedoch vorher daran, dass das Erstellen, Löschen und Aktualisieren von Ressourcen als Benutzer mit authentifiziert werden muss edit_posts Rechte. Wir werden also die grundlegende Authentifizierungsmethode verwenden, die wir im zweiten Teil dieser Serie gelernt haben.

Zunächst senden wir zu Testzwecken einen leeren Anforderungstext entlang der Anforderung:

$ POST / wp / v2 / posts

Der Server sendet eine 400 - Schlechte Anfrage Fehler, da die erforderlichen Argumente im Anforderungshauptteil fehlen. Die folgende Antwort wird vom Server zurückgegeben:

Die Antwort sagt, dass entweder Inhalt, Titel, oder Auszug werden zum Erstellen eines Post-Objekts benötigt. Diese Argumente können zusammen mit der Anforderung im Anforderungstext auf eine der folgenden drei Arten gesendet werden:

  1. Als JSON-Objekt
  2. Mit Formularen
  3. Als URL-Parameter

Es ist nur eine Frage der Wahl, eine dieser Methoden zu verwenden, und wir werden sie später in diesem Tutorial genauer untersuchen. Aber jetzt verwenden wir die erste Methode zum Erstellen eines Posts.

Wechseln Sie zum Senden von Argumenten als JSON-Objekt in Postman Karosserie Registerkarte und wählen Sie die roh Radio knopf. Wählen Sie dann aus der Dropdown-Liste rechts die Option aus JSON (Anwendung / Json) Möglichkeit. Im Textbereich darunter können Sie dann den JSON-Body hinzufügen.

Derzeit enthält dieser JSON-Body nur eine Eigenschaft für Titel der Post.

Senden Sie die Anfrage, indem Sie auf klicken Senden Taste. Wenn alles gut geht, gibt der Server eine 201 - erstellt Status mit dem neu erstellten Post-Objekt als Antwort.

Der Standardstatus dieses neu erstellten Beitrags ist Entwurf. Wir können das aktualisieren Status, sowie einige andere Eigenschaften, indem Sie eine andere senden POSTSTELLEN, oder PATCH anfordern. Die ID der in meinem Fall zurückgegebenen Post lautet 232, Ich schicke eine Anfrage an den folgenden Endpunkt:

$ POST / wp / v2 / posts / 232

Der Anforderungstext zum Aktualisieren der Status und das Inhalt Eigenschaft sieht so aus:

"status": "publish", "content": "Dies ist der Inhalt des Beitrags"

Nach dem Senden der Anfrage sendet der Server a 200 - OK Status, was bedeutet, dass der Beitrag erfolgreich aktualisiert wurde.

Im obigen Beispiel stießen wir auf die folgenden drei Argumente, um einen Beitrag zu erstellen:

  1. Titel
  2. Status
  3. Inhalt

Die vollständige Liste der unterstützten Argumente zum Erstellen eines Beitrags kann von einem einfachen Aufruf abgerufen werden OPTIONEN Anfrage wie folgt:

$ OPTIONS / wp / v2 / posts

Wir können dann das überprüfen args Eigentum in der POST Methodenarray.

Nachdem wir nun gelernt haben, wie wir einen Beitrag erstellen und aktualisieren können, werfen wir einen Blick auf einige weitere Ressourcen, mit denen wir arbeiten können.

Post Meta erstellen und aktualisieren

Update: Für die Arbeit mit Post- und Seitenmeta in der WP-REST-API ist jetzt ein begleitendes Plugin erforderlich, das vom WP-REST-API-Team auf GitHub verfügbar ist.

Post-Meta können erstellt werden, indem Sie eine POST Anfrage an folgende Strecke:

/ wp / v2 / posts / (? P[\ d] +) / meta

Woher (? P[\ d] +) ist die ID des übergeordneten Beitrags. Ich werde die ID des Beitrags verwenden, den wir im vorherigen Abschnitt erstellt haben 232.

Ähnlich wie beim Senden eines Anfragetextes zum Erstellen eines Post-Objekts kann ein JSON-Objekt mit zwei Eigenschaften zum Erstellen eines Post-Metas gesendet werden. Diese beiden Eigenschaften sind Schlüssel und Wert.

"Schlüssel": "Name", "Wert": "Bilal"

Die Werte von Schlüssel und Wert Eigenschaften sind Name und Bilal beziehungsweise.

Senden Sie die Anfrage und der Server sendet eine 201 - erstellt Statuscode, der anzeigt, dass das Post-Meta erfolgreich erstellt wurde. Das neu erstellte Post-Meta-Objekt wird ebenfalls in der Antwort zurückgegeben:

Bitte beachten Sie, dass die WP REST-API zum Zeitpunkt der Erstellung dieses Lernprogramms keine Ganzzahlwerte für das Erstellen von Post-Meta unterstützt. Wenn wir versuchen, im JSON-Objekt einen ganzzahligen Wert zum Erstellen von Post-Meta zu senden, a 400 - Schlechte Anfrage Der Statuscode wird vom Server zurückgegeben.

"Schlüssel": "Wert", "Wert": 12345

Beachten Sie die fehlenden Anführungszeichen um den Wert 12345. Die Antwort wird wie folgt aussehen:

Alles, was Sie zusammen mit der Anfrage senden, um Post-Meta zu erstellen, sollte also im String-Format vorliegen.

Methoden zur Erstellung und Aktualisierung von Daten

In diesem Lernprogramm haben wir bisher im Anforderungshauptteil das JSON-Format zum Erstellen und Aktualisieren von Ressourcen verwendet. Lassen Sie uns einen Blick auf alle Optionen werfen, die die WP REST-API zum Erstellen und Aktualisieren von Daten bietet.

Senden von Daten als URL-Parameter

Der einfachste Weg, Daten entlang der Anforderung zu senden, ist das Senden als URL-Parameter. Folgendes berücksichtigen POST Anfrage zum Erstellen eines Posts:

$ POST / wp / v2 / posts? Title = der + title & content = das + ist + der + inhalt

Die obige Anfrage sendet zwei Parameter für den Server an den Server Titel und das Inhalt der Post.

Ebenso für das Erstellen eines Post-Metas für einen Post mit einer ID von 232, Wir verwenden das Folgende POST anfordern:

$ POST / wp / v2 / posts / 232 / meta? Key = name & value = Bilal

Die obige Anfrage erstellt das folgende Metaobjekt:

Diese Methode ist am besten geeignet, wenn es sich bei den Parametern um kurze Zeichenfolgen handelt, wie im obigen Beispiel. Mit zunehmender Anzahl von Parametern und der Länge ihrer Werte wird es jedoch schwierig, sie als URL-Parameter zu verwalten.

Senden von Daten als JSON-Objekt

Bei Verwendung dieser Methode verwenden wir Argumente als Schlüssel / Wert-Paar in einem JSON-Objekt, um sie in der Anforderung zu übergeben. Bis jetzt haben wir Postman verwendet, um Anfragen an den Server zu senden. Wir werden nun einen Blick darauf werfen, wie wir diese Methode mit HTML und jQuery implementieren können.

Betrachten Sie das folgende einfache Formular, das aus drei Feldern für die besteht Titel, Status, und das Inhalt:

Wenn das obige Formular übermittelt wird, wird der folgende JavaScript-Code (jQuery) ausgeführt:

var postForm = $ ('# post-form'); var jsonData = Funktion (Formular) var arrData = form.serializeArray (), objData = ; $ .each (arrData, function (index, elem) objData [elem.name] = elem.value;); return JSON.stringify (objData); ; postForm.on ('submit', Funktion (e) e.preventDefault (); $ .ajax (url: 'http: // Ihr-dev-server / wp-json / wp / v2 / posts'), Methode: 'POST', Daten: jsonData (postForm), crossDomain: true, contentType: 'application / json', beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Basic username: password');, success: Funktion (Daten) Konsole.Log (Daten);, Fehler: Funktion (Fehler) Konsole.Log (Fehler);;);

Mit dem Absenden des obigen Formulars senden wir eine AJAX-Anfrage an die / wp / v2 / Beiträge Route. Das jsonData () Die Methode akzeptiert eine jQuery-Instanz des HTML-Formulars und konvertiert ihre Daten in das JSON-Format. Diese JSON-Daten werden dann im verwendet Daten Eigentum der $ .ajax () Methode. Außerdem setzen wir den Inhaltstyp auf Anwendung / Json mit der Inhaltstyp Eigentum.

Vor dem Senden der Anfrage setzen wir den Header so, dass er das enthält Genehmigung Header für die Verwendung der grundlegenden Authentifizierungsmethode. Wir haben bereits gelernt, die grundlegende Authentifizierungsmethode im zweiten Teil dieser Serie einzurichten und anzuwenden.

Zum Schluss wird die Anfrage an den gesendet / wp / v2 / Beiträge Route und ein neuer Beitrag wird erstellt. Dieses neu erstellte Post-Objekt wird vom Server als Antwort zurückgegeben und wir melden es einfach in der Konsole in der an Erfolg() Methode.

Das obige Beispiel zeigt die Verwendung des JSON-Formats zum Senden von Daten entlang der Anforderung. Die Quelle dieses JSON-Objekts kann abhängig von der Architektur Ihrer Anwendung außer einem HTML-Formular alles andere sein.

Bitte beachten Sie, dass Sie zur korrekten Funktion des obigen Codes möglicherweise den Code einstellen müssen Access-Control-Allow-Header Header-Feld, um die Genehmigung und Inhaltstyp Werte. Dies kann durch Hinzufügen des folgenden Codes in Ihren WordPress-Dateien erfolgen .htaccess Datei:

Headerset Access-Control-Allow-Header "Content-Type, Authorization"

Schauen wir uns nun das Senden von Daten durch HTML-Formulare an.

Senden von Daten mithilfe von Formularen

Die letzte Möglichkeit, Daten entlang der Anforderung zu senden, ist die Verwendung von HTML-Formularen. Diese Formulare sollten Felder mit der Name Attribut. Das Name Attribut dient als Argumentname wie Titel, StatusInhalt, usw. Die Werte dieser Felder dienen als Wert dieser Argumente.

Wir können dasselbe HTML-Formular verwenden, das im vorherigen Beispiel erstellt wurde, und dann den folgenden Code verwenden, um einen neuen Beitrag zu erstellen:

var postForm = $ ('# post-form'); postForm.on ('submit', Funktion (e) e.preventDefault (); $ .ajax (url: 'http: // Ihr-dev-server / wp-json / wp / v2 / posts'), Methode: 'POST', data: postForm.serialize (), crossDomain: true, beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Basic username: password');, Erfolg: function (data) console. Logdaten );  ); );

Der obige Code ist derselbe wie im vorherigen Beispiel, nur dass wir den Code entfernt haben jsonData () Methode und wir senden jetzt die Formulardaten im String-Format mit jQuery's serialisieren () Methode. Der obige jQuery-Code verwendet den Standardwert application / x-www-form-urlencoded Inhaltstyp, der die Daten in Form einer riesigen Zeichenfolge sendet, wobei die Argumente durch das Argument getrennt sind & Zeichen und ihre Werte werden mit der = Zeichen. Dies ähnelt etwas dem Senden von Daten als URL-Parameter, außer dass keine Daten verfügbar gemacht werden. Dies ist eine effiziente Methode zum Senden von Daten, wenn die Daten nur alphanumerische Zeichen enthalten.

Um binäre (nicht alphanumerische) Daten zu senden, verwenden wir die Multipart / Formulardaten Inhaltstyp. Diese Methode kann verwendet werden, wenn Bilder oder andere Dateien mit der WP-REST-API hochgeladen werden müssen.

Um Formulardaten in Postman zu senden, können Sie in die Karosserie Tab und dann entweder die Formulardaten oder x-www-form-urlencoded Möglichkeit.

Argumente können dann in Schlüssel / Wert-Paaren definiert werden, um die Anforderung zu senden.

Detaillierte Informationen zu den verschiedenen Formulartypen finden Sie in den W3C-Spezifikationen.

Hochladen von Medien mit der Multipart / Formulardaten Inhaltstyp

Nun, da wir uns das angesehen haben x-www-form-urlencoded Formulartyp, der Daten in Form einer Zeichenfolge sendet, beginnen wir mit der Erforschung eines fortgeschritteneren Formulartyps, d. h. Multipart / Formulardaten.

Das Multipart / Formulardaten Der Inhaltstyp wird beim Umgang mit binären Daten verwendet und kann daher zum Hochladen von Bildern oder anderen Dateitypen auf den Server verwendet werden.

Im folgenden Beispiel verwenden wir ein einfaches HTML-Formular, das aus einem besteht Eingabe [Typ = "Datei"] und ein bisschen jQuery zum Hochladen von Bildern auf den Server mithilfe von / wp / v2 / media Route.

Betrachten Sie das folgende HTML-Formular:

Das folgende JavaScript wird ausgeführt, wenn das obige Formular übermittelt wird:

var imageForm = $ ('# image-form'), fileInput = $ ('# file'), formData = neue FormData (); imageForm.on ('submit', Funktion (e) e.preventDefault (); formData.append ('file', fileInput [0] .files [0]); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / media ', Methode:' POST ', Daten: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader ( 'Autorisierung', 'Basisbenutzername: Kennwort');, Erfolg: Funktion (Daten) console.log (Daten);, Fehler: Funktion (Fehler) Konsole.log (Fehler);;) ;

Hier erhalten wir zuerst eine jQuery-Instanz des Formulars und seines Eingabefelds. Dann initialisieren wir ein neues Formulardaten Objekt. Das Formulardaten Die Schnittstelle bietet eine Möglichkeit zum Erstellen einer Gruppe von Formularfeldern mit Schlüssel / Wert-Paaren und verwendet dasselbe Format wie das Multipart / Formulardaten Formular-Codierungstyp.

Wenn das Formular gesendet wird, verhindern wir die Übermittlung durch Aufrufen des .Standard verhindern() Methode für das Ereignisobjekt. Wir fügen dann ein neues Feld an Formulardaten Instanz mit der .anhängen () Methode. Das .anhängen () Die Methode akzeptiert zwei Argumente für die Name und das Wert des Feldes. Die WP-REST-API erzwingt die Name Attribut des Dateieingabefeldes sein Datei. Deshalb setzen wir das erste Argument Name-sein Datei, Für das zweite Argument übergeben wir ein Datei-Blob-Objekt, indem wir auf das Eingabeelement verweisen.

Standardmäßig werden die Daten an die übergeben Daten Eigentum der jQuery.ajax () Methode wird in eine Abfragezeichenfolge verarbeitet. Da wir hier Bilddateien hochladen, möchten wir dies nicht, und zu diesem Zweck setzen wir die Prozessdaten Eigentum an falsch. Wir setzen auch die Inhaltstyp Eigentum an falsch verhindern application / x-www-form-urlencoded als Standardinhaltstyp an den Server gesendet.

Und zum Schluss setzen wir die Genehmigung um sich als Benutzer mit zu authentifizieren edit_posts Privilegien.

Stellen Sie sicher, dass Sie das obige Skript von einem Server aus ausführen. Wenn alles gut geht und die Datei hochgeladen ist, gibt der Server das neu erstellte Medienobjekt zurück.

Dieses Bild kann dann als gekennzeichnetes Bild für einen Beitrag festgelegt werden.

Nachdem wir uns eingehend mit dem Erstellen und Aktualisieren von Ressourcen mithilfe der WP REST-API befasst haben, sehen wir uns an, wie wir sie löschen können.

Daten mit der WP-REST-API löschen

Das Löschen von Daten mit der WP-REST-API ist so einfach wie das Senden von a LÖSCHEN Anfrage an eine bestimmte Ressource.

Wenn wir einen Beitrag mit einer ID löschen müssen 10, wir senden folgendes LÖSCHEN anfordern:

$ DELETE / wp / v2 / posts / 10

Dadurch wird der Beitrag in den Papierkorb verschoben, aber nicht dauerhaft gelöscht. Um ein Post dauerhaft zu löschen, verwenden wir die Macht Streit:

$ DELETE / wp / v2 / posts / 10? Force = true

Notiere dass der Macht Ein Argument ist erforderlich, wenn eine Ressource gelöscht wird, die den Papierkorb nicht unterstützt. Beispiele für solche Ressourcen sind Post-Meta und -Medien.

Nun schließen wir den aktuellen Teil der Serie ab.

Was kommt als nächstes??

In diesem ausführlichen Lernprogramm wurde das Erstellen, Aktualisieren und Löschen verschiedener Arten von Ressourcen mithilfe der WP-REST-API untersucht. Wir haben verschiedene Möglichkeiten kennengelernt, um Daten entlang der Anforderung zu senden, einschließlich Senden von Daten als URL-Parameter, im JSON-Format und durch Verwendung von Formularen. Am Ende des Tutorials haben wir erfahren, wie Sie Ressourcen löschen, indem Sie a LÖSCHEN anfordern.

Im nächsten und letzten Teil der Serie erfahren Sie mehr über die interne Struktur der WP REST-API und ihrer Klassen. Wir werden auch lernen, die API zu erweitern, um Serverantworten zu ändern. Wir sehen uns im nächsten Teil der Serie…