WP REST API Crearea, actualizarea și ștergerea datelor

În partea anterioară a seriei, am analizat modul în care putem folosi API-ul WP REST pentru a prelua conținut de pe server. Am învățat să recuperăm conținut pentru diferite resurse, inclusiv postări, post meta, etichete, categorii etc. Aceasta este o caracteristică puternică deoarece acest conținut poate fi folosit oriunde în sau în afara WordPress.

De asemenea, am aflat despre OPȚIUNI solicitați ca autocodurile API să fie listate pe toate rutele, punctele finale și argumentele respective. Acest lucru diminuează necesitatea de a se baza pe o documentație externă pentru API și permite ca modificările să fie descoperite destul de rapid în cazul în care API-ul a fost actualizat sau schimbat.

După examinarea acestor caracteristici, în tutorialul actual vom concentra acum atenția asupra celorlalte trei operații ale CRUD, adică crearea, actualizarea și ștergerea datelor utilizând API-ul WP REST.

În acest tutorial, vom:

  • analizați ce resurse să sprijine crearea, actualizarea și ștergerea metodelor
  • învățați să creați, să actualizați și să ștergeți resurse
  • căutați modalități de a trimite date de-a lungul cererii pentru a crea o resursă
  • analizați răspunsul serverului și codurile de răspuns diferite

Deci, să începem prin analizarea resurselor care susțin metodele de creare, actualizare și ștergere folosind API-ul WP REST.

Verificarea pentru crearea, actualizarea și ștergerea metodelor din rute

Înainte de a ne scufunda direct în crearea și actualizarea datelor cu WP REST API, trebuie să analizăm ce rute susțin metodele de creare și actualizare. Facem acest lucru prin verificarea rutelor și a rutelor metode proprietăți în obiectivele lor. Acest lucru se poate face prin trimiterea unui mesaj separat OPȚIUNI cererea pe rute individuale, dar o modalitate mai convenabilă este de a trimite o OBȚINE cererea către / Wp-json index, așa cum am făcut în partea anterioară a seriei.

Trimiterea a OBȚINE cererea către / Wp-json ruta returnează un obiect care conține toate rutele și obiectivele lor în rute proprietate.

În aceste rute individuale putem verifica dacă o anumită resursă acceptă POST, A PUNE, și ȘTERGE metode. Să începem prin analizarea lui Mesaje resursă.

Mesaje resursă prezintă date cu următoarele două rute:

/ wp / v2 / posturi / wp / v2 / posturi / (? P[\ D] +)

Prima rută indică colectarea obiectului post și a lui metodă proprietatea este după cum urmează:

"metode": ["GET", "POST"],

Acest metode proprietate arată că / posturi suportul rutei OBȚINE și POST metodele de recuperare și de creare a datelor.

Pentru / mesaje / (? P[\ D] +) care indică un singur punct Mesaje resursă, metode proprietatea este după cum urmează:

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

După cum se poate observa în codul de mai sus, / mesaje / (? P[\ D] +) rută acceptă OBȚINE, POST, A PUNE, PLASTURE, și ȘTERGE metode.

Prin examinarea ambelor rute de mai sus, putem concluziona că / posturi rută sprijină recuperarea și crearea resurselor. Si / mesaje / (? P[\ D] +) traseul acceptă recuperarea resurselor, precum și actualizarea și ștergerea. Deși nu suportă POST , această rută nu suportă crearea de resurse, așa cum vom vedea într-un exemplu de mai jos.

Prin urmare, rutele care indică o singură resursă nu pot fi folosite pentru a crea conținut, deși suportă POST metodă. Acest lucru se datorează faptului că, pentru aceste rute, POST, A PUNE, și PLASTURE metodele sunt utilizate pentru a actualiza conținutul în WP REST API.

Pentru a încheia această secțiune, să rezumăm conceptele pe care le-am învățat aici:

  • Putem verifica ce rute susțin OBȚINE, POST, și ȘTERGE prin trimiterea unui mesaj OPȚIUNI cerere.
  • Rutele care indică o singură entitate nu pot fi utilizate pentru a crea conținut. Ele sunt folosite pentru a actualiza conținutul, deși suportă POST metodă.

După ce am analizat diferite rute, suntem gata să creăm conținut utilizând API-ul WP REST și vom începe prin a explora Mesaje resursă.

Crearea și actualizarea unei postări

Să creăm o postare prin trimiterea unei solicitări de testare de la Postman sau de la orice alt client HTTP. Pentru a face acest lucru, trageți-vă clientul HTTP și trimiteți-l POST cererea către / posturi traseu. Dar, înainte de asta, rețineți că crearea de resurse, ștergerea și actualizarea necesită autentificare ca utilizator edit_posts drepturi. Deci, vom folosi metoda de autentificare de bază pe care am învățat-o în a doua parte a acestei serii.

Inițial, trimitem un corp de solicitare gol de-a lungul cererii în scopuri de testare:

$ POST / wp / v2 / postări

Serverul va returna a 400 - Cerere rea deoarece au lipsit argumentele necesare în organismul de solicitare. Următorul răspuns va fi returnat de server:

Răspunsul afirmă că oricare dintre acestea conţinut, titlu, sau extras sunt necesare pentru crearea unui obiect post. Aceste argumente pot fi transmise de-a lungul cererii în organismul de solicitare în una din următoarele trei moduri:

  1. Ca obiect JSON
  2. Folosind formulare
  3. Ca parametri URL

Este doar o chestiune de alegere să folosiți oricare dintre aceste metode și vom examina mai îndeaproape mai târziu în acest tutorial. Dar să folosim acum prima metodă pentru crearea unui post.

Pentru a trimite argumentele ca obiect JSON în Postman, comutați la Corp și selectați brut buton de radio. Apoi, din meniul derulant din partea dreaptă, selectați JSON (aplicație / json) opțiune. În zona de text de mai jos, puteți adăuga corpul JSON.

În prezent, acest organism JSON deține doar o singură proprietate pentru titlu a postului.

Trimiteți cererea dând clic pe Trimite buton. Dacă totul merge bine, serverul va returna a 201 - Creat cu noul obiect postat ca răspuns.

Starea implicită a postului nou creat este proiect. Putem actualiza stare, precum și alte proprietăți, prin trimiterea unui altul POSTA PUNE, sau PLASTURE cerere. ID-ul postului returnat în cazul meu este 232, așa că voi trimite o cerere la următorul punct final:

$ POST / wp / v2 / posturi / 232

Organismul de solicitare pentru actualizarea stare si conţinut proprietatea arată astfel:

"status": "publish", "content": "Acesta este conținutul mesajului"

După trimiterea cererii, serverul va returna a - OK statut, ceea ce înseamnă că postul a fost actualizat cu succes.

În exemplul de mai sus, am descoperit următoarele trei argumente pentru a crea o postare:

  1. titlu
  2. stare
  3. conţinut

Lista completă a argumentelor acceptate pentru crearea unei postări poate fi extrasă printr-o simplă OPȚIUNI cereți după cum urmează:

$ OPTIONS / wp / v2 / postări

Putem apoi verifica args proprietate în POST matrice de metode.

Acum, că am învățat cum putem crea și actualiza un post, să aruncăm o privire la mai multe resurse cu care putem lucra.

Crearea și actualizarea Post Meta

Actualizare: Lucrul cu postul și pagina meta din WP REST API necesită acum un plugin de companie disponibil pe GitHub de echipa WP REST API.

Mesajul post poate fi creat prin trimiterea unui mesaj POST solicitați următoarea rută:

/ wp / v2 / mesaje / (? P[\ D] +) / meta

Unde (? P[\ D] +) este ID-ul postului părinte. Voi folosi id-ul postului pe care l-am creat în secțiunea anterioară, care este 232.

În mod similar cu modul în care trimitem un organism de solicitare pentru a crea un obiect post, un obiect JSON cuprinzând două proprietăți poate fi trimis pentru a crea o postare meta. Aceste două proprietăți sunt cheie și valoare.

"cheie": "nume", "valoare": "Bilal"

Valorile cheie și valoare proprietățile sunt Nume și Bilal respectiv.

Trimiteți cererea și serverul va returna a 201 - Creat cod de stare, care arată că post-meta a fost creată cu succes. Obiectul post meta nou creat va fi, de asemenea, returnat în răspuns:

Rețineți că la scrierea acestui tutorial API-ul WP REST nu acceptă valori întregi pentru crearea post-meta. Dacă încercăm să trimitem o valoare întregă în obiectul JSON pentru a crea post meta, a 400 - Cerere rea codul de stare va fi returnat de server.

"cheie": "valoare", "valoare": 12345

Observați ghilimele lipsă din jurul valorii 12345. Răspunsul trimis va fi după cum urmează:

Deci, tot ce trimiteți de-a lungul cererii de a crea post meta ar trebui să fie în format de șir.

Metode de creare și actualizare de date

Până acum, în acest tutorial, am folosit formatul JSON în corpul solicitării pentru a crea și actualiza resurse. Să aruncăm o privire asupra tuturor opțiunilor pe care WP REST API le oferă pentru crearea și actualizarea datelor.

Trimiterea datelor ca parametri URL

Cea mai ușoară modalitate de a trimite date de-a lungul cererii este să o trimiteți ca parametri URL. Luați în considerare următoarele POST cererea pentru crearea unei postări:

$ POST / wp / v2 / posts? Title = + titlul și conținutul = acest + este + conținutul +

Cererea de mai sus trimite doi parametri pe server pentru titlu si conţinut a postului.

În mod similar, pentru a crea post meta pentru un post care are un ID de 232, folosim următoarele POST cerere:

$ POST / wp / v2 / posts / 232 / meta? Cheie = nume & valoare = Bilal

Cererea de mai sus va crea următorul obiect meta:

Această metodă este cea mai potrivită atunci când parametrii sunt șiruri scurte, ca în exemplul de mai sus. Dar, pe măsură ce crește numărul de parametri și lungimea valorilor lor, devine greu să le gestionăm ca parametri URL.

Trimiterea datelor ca obiect JSON

Folosind această metodă, luăm argumente ca o pereche cheie / valoare într-un obiect JSON pentru a le transmite de-a lungul cererii. Până acum, am folosit Postman pentru a trimite cereri către server. Vom analiza modul în care putem implementa această metodă folosind HTML și jQuery.

Luați în considerare următoarea formă simplă, care constă din trei câmpuri pentru titlu, stare, si conţinut:

Când se trimite formularul de mai sus, se execută următorul cod JavaScript (jQuery):

var postForm = $ ('# post-form'); var jsonData = funcție (formă) var arrData = form.serializeArray (), objData = ; $. fiecare (arrData, funcție (index, elem) objData [elem.name] = elem.value;); returnați JSON.stringify (objData); ; (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', metoda: 'POST', date: jsonData (postForm), crossDomain: true, contentType: 'application / json', inainteSend: function (xhr) xhr.setRequestHeader (' funcția (date) console.log (date);, eroare: funcție (eroare) console.log (eroare);););

La trimiterea formularului de mai sus, trimitem o solicitare AJAX la / Wp / v2 / mesaje traseu. jsonData () metoda acceptă o instanță jQuery a formularului HTML și își convertește datele în format JSON. Aceste date JSON sunt apoi utilizate în date proprietate a $ .Ajax () metodă. În plus, am setat tipul de conținut la application / json folosind tipul de conținut proprietate.

Înainte de a trimite cererea, setăm antetul pentru a include Autorizare antet pentru utilizarea metodei de autentificare de bază. Am învățat deja să configuram și să folosim metoda de autentificare de bază în a doua parte a acestei serii.

În cele din urmă, solicitarea este trimisă către / Wp / v2 / mesaje traseu și este creată o nouă postare. Acest obiect nou creat este returnat de server ca răspuns și pur și simplu îl logam în consola din interiorul succes() metodă.

Exemplul de mai sus demonstrează utilizarea formatului JSON pentru a trimite date de-a lungul cererii. Sursa acestui obiect JSON poate fi orice altceva decât un formular HTML, în funcție de arhitectura aplicației dvs..

Rețineți că pentru ca codul de mai sus să funcționeze corect, poate fi necesar să setați Access-Control-Allow-Cap antet pentru a include Autorizare și Tipul de conținut valori. Acest lucru se poate face prin adăugarea următorului cod în WordPress .htaccess fişier:

Antet Set Access-Control-Allow-Headers "Tip de conținut, autorizare"

Să analizăm acum trimiterea de date prin formulare HTML.

Trimiterea datelor utilizând formularul

Ultimul mod de a trimite date de-a lungul cererii este prin utilizarea formularelor HTML. Aceste formulare trebuie să conțină câmpuri cu Nume atribut. Nume atributul servește ca un nume de argument ca titlu, stareconţinut, etc. Valorile acestor câmpuri servesc drept valoare a acestor argumente.

Putem folosi același form HTML creat în exemplul anterior și apoi vom folosi următorul cod pentru a crea o postare nouă:

var postForm = $ ('# post-form'); (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', metoda: 'POST', date: postForm.serialize (), crossDomain: true, înainteSend: functie (xhr) xhr.setRequestHeader ('Autorizare', 'Nume de utilizator: parola'); jurnal (date);););

Codul de mai sus este același cu cel din exemplul anterior, cu excepția faptului că l-am eliminat jsonData () și trimitem acum datele formularului în format de șir folosind jQuery serialize () metodă. Codul jQuery de mai sus utilizează valoarea implicită application / x-www-form-urlencoded tipul de conținut care trimite datele sub forma unui șir gigant cu argumente separate de către & semnul și valorile acestora fiind atribuite utilizând = semn. Acest lucru seamănă oarecum cu trimiterea de date ca parametri de adresă URL, cu excepția faptului că nu expune date. Acesta este un mod eficient de a trimite date dacă datele conțin doar caractere alfanumerice.

Pentru a trimite date binare (non-alfanumerice), folosim multipart / form-data tipul de conținut. Această metodă poate fi utilizată dacă trebuie să încărcați imagini sau alte fișiere utilizând API-ul WP REST.

Pentru a trimite date de formular în Postman, puteți comuta la Corp și apoi utilizați fie formular-date sau x-www-form-urlencoded opțiune.

Argumentele pot fi apoi definite în perechi cheie / valoare pentru a trimite de-a lungul cererii.

Informații detaliate privind diferitele tipuri de formulare pot fi găsite în specificațiile W3C.

Încărcarea mediilor utilizând multipart / form-data Tipul de conținut

Acum, că am privit la x-www-form-urlencoded formularul de tip, care trimite datele sub forma unui șir, să începem să explorăm un tip de codificare de formă mai avansat, adică. multipart / form-data.

 multipart / form-data tipul de conținut este utilizat atunci când se ocupă de date binare și, prin urmare, poate fi folosit pentru a încărca imagini sau alte tipuri de fișiere pe server.

În exemplul următor, folosim un simplu formular HTML constând dintr - un intrare [type =“file“] și un pic de jQuery pentru a încărca imagini pe server folosind / Wp / v2 / mass-media traseu.

Luați în considerare următorul formular HTML:

Următorul cod JavaScript va fi executat atunci când se va trimite formularul de mai sus:

var imageForm = $ ('# imagine-form'), fileInput = $ ('fișier'), formData = new FormData (); imageForm.on ('trimite', funcția (e) e.preventDefault (); formData.append ('fișier', fileInput [0] .files [0]); a-dev-server / wp-json / wp / v2 / media ", metoda: 'POST', data: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader (Nume de utilizator: parola);, succes: functie (date) console.log (data);, eroare: functie (eroare) console.log (eroare)); ;

Aici primim o instanță jQuery a formularului și a câmpului său de intrare. Apoi inițializăm un nou FormData obiect. FormData oferă o modalitate de a construi un set de câmpuri de formular cu perechi cheie / valoare și utilizează același format ca și multipart / form-data forme de tip codificare.

Atunci când formularul este trimis, vom împiedica trimiterea acestuia prin apelarea .preventDefault () metodă pentru obiectul evenimentului. Apoi adăugăm un câmp nou la formData instanță folosind .adăuga() metodă. .adăuga() metoda acceptă două argumente pentru Nume si valoare din teren. API-ul WP REST forțează Nume atributul câmpului de introducere a fișierului va fi fişier. De aceea am stabilit primul argument - Nume-a fi fişier, iar pentru cel de-al doilea argument trecem un obiect blob cu referire la elementul de intrare.

Implicit, datele au trecut în date proprietate a jQuery.ajax () metoda este procesată într-un șir de interogare. Din moment ce încarcă fișiere imagine aici, nu vrem să se întâmple acest lucru, și în acest scop am setat procesarea datelor proprietate la fals. Am setat și tipul de conținut proprietate la fals a preveni application / x-www-form-urlencoded fiind trimis ca tip de conținut implicit la server.

În cele din urmă, am setat Autorizare antet pentru a ne autentifica ca utilizator cu edit_posts privilegii.

Asigurați-vă că rulați scriptul de mai sus dintr-un server. Dacă totul merge bine și fișierul este încărcat, serverul va returna obiectul media nou creat.

Această imagine poate fi apoi setată ca o imagine recomandată pentru o postare.

Urmărind cu atenție modalitățile de a crea și actualiza resurse folosind API-ul WP REST, să vedem cum putem să le ștergem.

Ștergerea datelor cu API-ul WP REST

Ștergerea datelor cu API-ul WP REST este la fel de simplă ca trimiterea unui a ȘTERGE cererea către o anumită resursă.

Dacă trebuie să ștergem o postare care are un ID de 10, trimitem următoarele ȘTERGE cerere:

$ DELETE / wp / v2 / posturi / 10

Aceasta va muta postarea în coșul de gunoi, dar nu o va șterge definitiv. Pentru ștergerea definitivă a unei postări, folosim forta argument:

$ DELETE / wp / v2 / posturi / 10? Forță = adevărat

Rețineți că forta argumentul este necesar atunci când ștergeți o resursă care nu acceptă trasarea. Exemple de astfel de resurse sunt post-meta și media.

După ce am spus acest lucru, încheiem acum partea curentă a seriei.

Ce este în continuare?

În acest tutorial indelungat, am analizat crearea, actualizarea și ștergerea diferitelor tipuri de resurse utilizând API-ul WP REST. Am aflat despre modalități diferite de a trimite date de-a lungul cererii, inclusiv trimiterea de date ca parametri URL, în format JSON și utilizând formulare. La sfârșitul tutorialului, am aflat despre ștergerea resurselor prin trimiterea unui mesaj ȘTERGE cerere.

În următoarea și ultima tranșă a seriei, vom afla despre structura internă a WP REST API și clasele sale. Vom învăța, de asemenea, să extindem API-ul pentru a modifica răspunsurile serverului. Ne vedem în următoarea parte a serialului ...

Cod