API RIP WP creazione, aggiornamento ed eliminazione dei dati

Nella parte precedente della serie, abbiamo esaminato come utilizzare l'API WP REST per recuperare il contenuto dal server. Abbiamo imparato a recuperare contenuti per risorse diverse tra cui post, post meta, tag, categorie, ecc. Questa è una funzionalità potente dal momento che questo contenuto può essere utilizzato ovunque all'interno o all'esterno di WordPress.

Abbiamo anche imparato a conoscere il OPZIONI richiedere di auto-documentare l'API elencando tutti i percorsi, i relativi endpoint e i rispettivi argomenti. Ciò riduce la necessità di fare affidamento su una documentazione esterna per l'API e consente di rilevare le modifiche piuttosto rapidamente nel caso in cui l'API sia stata aggiornata o modificata.

Avendo esaminato queste funzionalità, nel tutorial corrente concentreremo la nostra attenzione sulle altre tre operazioni di CRUD, ovvero creando, aggiornando ed eliminando i dati utilizzando l'API WP REST.

In questo tutorial, dovremo:

  • analizzare quali risorse supportano creare, aggiornare ed eliminare metodi
  • impara a creare, aggiornare ed eliminare risorse
  • guarda come inviare dati lungo la richiesta per creare una risorsa
  • analizzare la risposta del server e diversi codici di risposta

Iniziamo quindi analizzando quali risorse supportano i metodi di creazione, aggiornamento ed eliminazione utilizzando l'API REST di WP.

Verifica dei metodi di creazione, aggiornamento ed eliminazione nelle rotte

Prima di procedere direttamente alla creazione e all'aggiornamento dei dati con l'API WP REST, è necessario analizzare quali percorsi supportano la creazione e l'aggiornamento dei metodi. Lo facciamo controllando i percorsi e il metodi proprietà nei loro endpoint. Questo può essere fatto inviando un separato OPZIONI richiesta ai singoli percorsi, ma un modo più conveniente è quello di inviare un OTTENERE richiesta al / Wp-JSON indice come abbiamo fatto nella parte precedente della serie.

Invio a OTTENERE richiesta al / Wp-JSON route restituisce un oggetto che contiene tutti i percorsi e i loro endpoint in itinerari proprietà.

È in questi percorsi individuali che possiamo verificare se una risorsa specifica supporta INVIARE, METTERE, e ELIMINA metodi. Iniziamo analizzando il Messaggi risorsa.

Il Messaggi risorsa espone i dati con le seguenti due rotte:

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

La prima rotta punta alla collezione dell'oggetto post, e la sua metodo la proprietà è la seguente:

"metodi": ["OTTIENI", "POST"],

Questo metodi proprietà mostra che il / messaggi percorso supporta OTTENEREINVIARE metodi per recuperare e creare dati rispettivamente.

Per il / messaggi / (? P[\ D] +) percorso, che punta a un singolo Messaggi risorsa, il metodi la proprietà è la seguente:

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

Come si può vedere nel codice sopra, il / messaggi / (? P[\ D] +) percorso supporta il OTTENERE, INVIARE, METTERE, PATCH, e ELIMINA metodi.

Esaminando entrambe le rotte sopra, possiamo concludere che il / messaggi il percorso supporta il recupero e la creazione delle risorse. E il / messaggi / (? P[\ D] +) percorso supporta il recupero delle risorse, nonché l'aggiornamento e la cancellazione. Anche se supporta il INVIARE metodo, questo percorso non supporta la creazione di risorse come vedremo in un esempio di seguito.

Pertanto, i percorsi che puntano a una singola risorsa non possono essere utilizzati per creare contenuti, sebbene supportino il INVIARE metodo. Questo perché, per questi percorsi, il INVIARE, METTERE, e PATCH i metodi vengono utilizzati per aggiornare il contenuto nell'API REST di WP.

Per concludere questa sezione, riassumiamo i concetti che abbiamo appreso qui:

  • Possiamo controllare quali percorsi supportano OTTENERE, INVIARE, e ELIMINA metodi inviando un OPZIONI richiesta.
  • Le rotte che puntano a una singola entità non possono essere utilizzate per creare contenuti. Sono usati per aggiornare il contenuto, anche se supportano il INVIARE metodo.

Dopo aver analizzato diversi percorsi, siamo ora pronti a creare contenuti utilizzando l'API WP REST e inizieremo esplorando il Messaggi risorsa.

Creazione e aggiornamento di un post

Creiamo un post inviando una richiesta di test da Postman o qualsiasi altro client HTTP. Per fare ciò, avviare il client HTTP e inviare a INVIARE richiesta al / messaggi itinerario. Ma prima di questo, ricorda che la creazione, l'eliminazione e l'aggiornamento delle risorse richiedono l'autenticazione come utente con edit_posts diritti. Quindi useremo il metodo di autenticazione di base che abbiamo imparato nella seconda parte di questa serie.

Inizialmente, inviamo un corpo di richiesta vuoto lungo la richiesta a scopo di test:

$ POST / wp / v2 / posts

Il server restituirà a 400 - Richiesta non valida errore poiché mancavano gli argomenti richiesti nel corpo della richiesta. La seguente risposta verrà restituita dal server:

La risposta afferma che entrambi soddisfare, titolo, o estratto sono necessari per creare un oggetto post. Questi argomenti possono essere inviati lungo la richiesta nel corpo della richiesta in uno dei seguenti tre modi:

  1. Come oggetto JSON
  2. Utilizzando le forme
  3. Come parametri URL

È solo una questione di scelta utilizzare uno di questi metodi e li esamineremo più da vicino in questo tutorial. Ma ora usiamo il primo metodo per creare un post.

Per inviare argomenti come oggetto JSON in Postman, passare a Corpo scheda e selezionare il crudo pulsante di scelta. Quindi dal menu a discesa a destra, selezionare il JSON (application / json) opzione. Nell'area di testo sottostante, puoi quindi aggiungere il corpo JSON.

Attualmente, questo corpo JSON contiene solo una proprietà per il titolo del post.

Invia la richiesta facendo clic sul Inviare pulsante. Se tutto va bene, il server restituirà a 201 - Creato stato con l'oggetto post appena creato come risposta.

Lo stato predefinito di questo post appena creato è bozza. Possiamo aggiornare il stato, così come alcune altre proprietà, inviandone un'altra INVIAREMETTERE, o PATCH richiesta. L'ID del post restituito nel mio caso è 232, quindi invierò una richiesta al seguente endpoint:

$ POST / wp / v2 / posts / 232

Il corpo della richiesta per aggiornare il stato e il soddisfare la proprietà si presenta così:

"status": "pubblica", "contenuto": "Questo è il contenuto del post"

Dopo aver inviato la richiesta, il server restituirà a 200 - OK stato, il che significa che il post è stato aggiornato correttamente.

Nell'esempio sopra, abbiamo trovato i seguenti tre argomenti per creare un post:

  1. titolo
  2. stato
  3. soddisfare

L'elenco completo degli argomenti supportati per la creazione di un post può essere recuperato da un semplice OPZIONI richiesta come segue:

$ OPZIONI / wp / v2 / post

Possiamo quindi controllare il args proprietà nel INVIARE array di metodi.

Ora che abbiamo imparato come possiamo creare e aggiornare un post, diamo un'occhiata ad altre risorse con cui possiamo lavorare.

Creazione e aggiornamento di Post Meta

Aggiornamento: l'utilizzo di meta post e pagina nell'API REST di WP richiede ora un plug-in companion disponibile su GitHub dal team dell'API REST di WP.

Il post meta può essere creato inviando un INVIARE richiesta per il seguente percorso:

/ WP / V2 / messaggi / (? P[\ D] +) / meta

Dove (? P[\ D] +) è l'ID del post principale. Userò l'ID del post che abbiamo creato nella sezione precedente, ovvero 232.

In modo simile a come inviamo un corpo di richiesta per creare un oggetto post, è possibile inviare un oggetto JSON composto da due proprietà per creare un post meta. Queste due proprietà sono chiave e valore.

"chiave": "nome", "valore": "Bilal"

I valori di chiavevalore proprietà sono nomeBilal rispettivamente.

Invia la richiesta e il server restituirà a 201 - Creato codice di stato, che mostra che il post meta è stato creato con successo. Anche il post meta oggetto appena creato verrà restituito nella risposta:

Si noti che al momento della stesura di questo tutorial, l'API WP REST non supporta i valori interi per la creazione di post meta. Se proviamo a inviare un valore intero nell'oggetto JSON per creare post meta, a 400 - Richiesta non valida il codice di stato verrà restituito dal server.

"chiave": "valore", "valore": 12345

Nota le virgolette mancanti attorno al valore 12345. La risposta restituita sarà simile alla seguente:

Quindi qualsiasi cosa tu invii lungo la richiesta per creare post meta dovrebbe essere in formato stringa.

Metodi di creazione e aggiornamento dei dati

Finora in questo tutorial, abbiamo utilizzato il formato JSON nel corpo della richiesta per creare e aggiornare le risorse. Diamo un'occhiata a tutte le opzioni che l'API WP REST fornisce per la creazione e l'aggiornamento dei dati.

Invio di dati come parametri URL

Il modo più semplice per inviare dati lungo la richiesta è inviarlo come parametri URL. Considera quanto segue INVIARE richiesta per la creazione di un post:

$ POST / wp / v2 / posts? Title = il + titolo e contenuto = questo + è + il + contenuto

La richiesta precedente invia due parametri al server per titolo e il soddisfare del post.

Allo stesso modo, per creare post meta per un post che ha un ID di 232, usiamo il seguente INVIARE richiesta:

$ POST / wp / v2 / posts / 232 / meta? Key = nome e valore = Bilal

La richiesta di cui sopra creerà il seguente meta oggetto:

Questo metodo è più adatto quando i parametri sono stringhe brevi, come nell'esempio sopra. Ma con l'aumentare del numero di parametri e della lunghezza dei loro valori, diventa difficile gestirli come parametri URL.

Invio di dati come oggetto JSON

Usando questo metodo, prendiamo argomenti come coppia chiave / valore in un oggetto JSON per passarli lungo la richiesta. Fino ad ora, abbiamo utilizzato Postman per inviare richieste al server. Daremo ora un'occhiata a come possiamo implementare questo metodo usando HTML e jQuery.

Si consideri il seguente modulo semplice composto da tre campi per titolo, stato, e il soddisfare:

Quando viene inviato il modulo sopra, viene eseguito il seguente codice JavaScript (jQuery):

var postForm = $ ('# post-form'); var jsonData = function (form) var arrData = form.serializeArray (), objData = ; $ .each (arrData, function (index, elem) objData [elem.name] = elem.value;); restituisce JSON.stringify (objData); ; postForm.on ('submit', function (e) e.preventDefault (); $ .ajax (url: 'http: // tuo-dev-server / wp-json / wp / v2 / posts', metodo: 'POST', dati: jsonData (postForm), crossDomain: true, contentType: 'application / json', beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Base username: password');, successo: function (data) console.log (data);, errore: function (errore) console.log (errore);););

Su invio del modulo sopra, inviamo una richiesta AJAX al / WP / V2 / messaggi itinerario. Il jsonData () metodo accetta un'istanza jQuery del modulo HTML e converte i suoi dati in formato JSON. Questi dati JSON vengono quindi utilizzati in dati proprietà del $ .Ajax () metodo. Inoltre, impostiamo il tipo di contenuto su application / json usando il tipo di contenuto proprietà.

Prima di inviare la richiesta, impostiamo l'intestazione per includere il Autorizzazione intestazione per l'utilizzo del metodo di autenticazione di base. Abbiamo già imparato a configurare e utilizzare il metodo di autenticazione di base nella seconda parte di questa serie.

Infine, la richiesta viene inviata al / WP / V2 / messaggi percorso e viene creato un nuovo post. Questo oggetto post appena creato viene restituito dal server come risposta e lo registriamo semplicemente nella console all'interno di successo() metodo.

L'esempio sopra dimostra l'uso del formato JSON per inviare dati lungo la richiesta. L'origine di questo oggetto JSON può essere qualsiasi cosa oltre a un modulo HTML, a seconda dell'architettura dell'applicazione.

Si noti che per il corretto funzionamento del codice sopra descritto, potrebbe essere necessario impostare il codice Access-Control-Allow-intestazioni campo di intestazione per includere il AutorizzazioneTipo di contenuto valori. Questo può essere fatto aggiungendo il seguente codice nel tuo WordPress .htaccess file:

Set di intestazione Access-Control-Allow-Headers "Content-Type, Authorization"

Diamo ora un'occhiata all'invio di dati tramite moduli HTML.

Invio di dati tramite moduli

L'ultimo modo di inviare dati lungo la richiesta è utilizzando i moduli HTML. Queste forme dovrebbero contenere campi con il nome attributo. Il nome l'attributo serve come un nome di argomento come titolo, statosoddisfare, ecc. I valori di questi campi servono come valore di questi argomenti.

Possiamo utilizzare lo stesso modulo HTML creato nell'esempio precedente e quindi utilizzare il seguente codice per creare un nuovo post:

var postForm = $ ('# post-form'); postForm.on ('submit', function (e) e.preventDefault (); $ .ajax (url: 'http: // tuo-dev-server / wp-json / wp / v2 / posts', metodo: 'POST', dati: postForm.serialize (), crossDomain: true, beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Base username: password');, success: function (data) console. log (dati);););

Il codice sopra è lo stesso dell'esempio precedente, tranne che abbiamo rimosso il jsonData () metodo e ora stiamo inviando i dati del modulo in formato stringa usando jQuery serialize () metodo. Il codice jQuery sopra riportato utilizza il valore predefinito application / x-www-form-urlencoded tipo di contenuto che invia i dati sotto forma di una stringa gigante con argomenti separati da & segno e i loro valori assegnati utilizzando il = cartello. Questo assomiglia in qualche modo all'invio di dati come parametri URL, tranne per il fatto che non espone i dati. Questo è un modo efficace per inviare dati se i dati contengono solo caratteri alfanumerici.

Per inviare dati binari (non alfanumerici), usiamo il / Form-data multipart tipo di contenuto. Questo metodo può essere utilizzato se è necessario caricare immagini o altri file utilizzando l'API WP REST.

Per inviare i dati del modulo in Postman, è possibile passare a Corpo scheda e quindi utilizzare il form-data o x-www-form-urlencoded opzione.

Gli argomenti possono quindi essere definiti in coppie chiave / valore da inviare lungo la richiesta.

Informazioni dettagliate relative a diversi tipi di moduli sono disponibili nelle specifiche W3C.

Caricamento dei media usando il / Form-data multipart Tipo di contenuto

Ora che abbiamo guardato il x-www-form-urlencoded tipo di modulo, che invia i dati sotto forma di stringa, iniziamo a esplorare un tipo di codifica di modulo più avanzato, ad es. / Form-data multipart.

Il / Form-data multipart il tipo di contenuto viene utilizzato quando si ha a che fare con dati binari e quindi può essere utilizzato per caricare immagini o altri tipi di file sul server.

Nell'esempio seguente, usiamo un semplice modulo HTML composto da un input [type =”file”] e un po 'di jQuery per caricare immagini sul server usando il / Wp / v2 / media itinerario.

Considera il seguente modulo HTML:

Il seguente codice JavaScript verrà eseguito quando viene inviato il modulo sopra riportato:

var imageForm = $ ('# image-form'), fileInput = $ ('# file'), formData = new FormData (); imageForm.on ('submit', function (e) e.preventDefault (); formData.append ('file', fileInput [0] .file [0]); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / media ', metodo:' POST ', data: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader ( 'Autorizzazione', 'Nome utente di base: password');, successo: funzione (dati) console.log (dati);, errore: funzione (errore) console.log (errore););) ;

Qui per prima cosa otteniamo un'istanza jQuery del modulo e il suo campo di input. Quindi inizializziamo un nuovo formdata oggetto. Il formdata l'interfaccia fornisce un modo per costruire un insieme di campi modulo con coppie chiave / valore e utilizza lo stesso formato di / Form-data multipart modulo di codifica.

Quando il modulo viene inviato, ne impediamo l'invio chiamando il .preventDefault () metodo sull'oggetto evento. Quindi aggiungiamo un nuovo campo al formdata istanza usando il .aggiungere() metodo. Il .aggiungere() metodo accetta due argomenti per il nome e il valore del campo. L'API WP REST impone il nome attributo del campo di input del file da essere file. Ecco perché abbiamo impostato il primo argomento: il nome-essere file, e per il secondo argomento passiamo un oggetto blob di file facendo riferimento all'elemento input.

Per impostazione predefinita, i dati passati al dati proprietà del jQuery.ajax () il metodo viene elaborato in una stringa di query. Dato che stiamo caricando file immagine qui, non vogliamo che ciò accada, e a tale scopo impostiamo il file dati di processo proprietà a falso. Abbiamo anche impostato il tipo di contenuto proprietà a falso impedire application / x-www-form-urlencoded inviato come tipo di contenuto predefinito al server.

E infine, abbiamo impostato il Autorizzazione intestazione per autenticarci come utente con edit_posts privilegi.

Assicurati di eseguire lo script sopra da dentro un server. Se tutto va bene e il file viene caricato, il server restituirà l'oggetto multimediale appena creato.

Questa immagine può quindi essere impostata come immagine in primo piano per un post.

Dopo aver esaminato attentamente i modi per creare e aggiornare le risorse utilizzando l'API REST di WP, vediamo come possiamo eliminarle.

Eliminazione dei dati con l'API REST WP

Cancellare i dati con l'API WP REST è semplice come inviare un ELIMINA richiesta ad una particolare risorsa.

Se abbiamo bisogno di cancellare un post con un ID di 10, inviamo il seguente ELIMINA richiesta:

$ DELETE / wp / v2 / posts / 10

Questo sposterà il post nel cestino ma non lo eliminerà in modo permanente. Per eliminare definitivamente un post, utilizziamo il vigore discussione:

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

Si noti che il vigore argomento è richiesto quando si elimina una risorsa che non supporta il cestin. Esempi di tali risorse sono post meta e media.

Detto questo, ora concludiamo la parte attuale della serie.

Che succede Avanti?

In questo lungo tutorial, abbiamo esaminato la creazione, l'aggiornamento e l'eliminazione di diversi tipi di risorse utilizzando l'API WP REST. Abbiamo appreso diversi modi per inviare dati lungo la richiesta, inclusi l'invio di dati come parametri URL, in formato JSON e utilizzando i moduli. Alla fine del tutorial, abbiamo imparato a cancellare le risorse inviando un ELIMINA richiesta.

Nella prossima e ultima puntata della serie, conosceremo la struttura interna dell'API REST di WP e le sue classi. Impareremo anche ad estendere l'API per modificare le risposte del server. Ci vediamo nella prossima parte della serie: state sintonizzati ...