Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

API REST di WP: Creazione, aggiornamento ed eliminazione di dati

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Introducing the WP REST API.
WP REST API: Retrieving Data
WP REST API: Internals and Customization

Italian (Italiano) translation by Piergiorgio Sansone (you can also view the original English article)

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

Abbiamo anche imparato come la richiesta OPTIONS auto-documenta l'API elencando tutti i percorsi ed i relativi endpoint e loro rispettivi argomenti. Questo diminuisce la necessità di affidarsi a una documentazione esterna per l'API e nel caso in cui l'API sia stata aggiornata o modificata, consente di scoprire  piuttosto rapidamente le modifiche apportate.

Dopo aver esaminato queste caratteristiche, ora focalizzeremo la nostra attenzione sulle altre tre operazioni CRUD, ovvero creazione, aggiornamento e cancellazione dati utilizzando l'API REST di WP.

In questo tutorial, ci impegniamo ad:

  • analizzare quali risorse supportano i metodi di creazione, aggiornamento e cancellazione
  • imparare a creare, aggiornare ed eliminare le risorse
  • cercare modi per inviare i dati attraverso la richiesta per creare una risorsa
  • analizzare la risposta del server e codici di risposta diversi

Iniziamo analizzando le risorse che supportano la creazione, l'aggiornamento ed i metodi di eliminazione utilizzando l'API REST di WP.

Controllo nei percorsi dei metodi Create, Update e Delete 

Prima di tuffarci direttamente nella creazione e aggiornamento dei dati con l'API REST di WP, abbiamo bisogno di analizzare quali percorsi supportano i metodi di creazione e aggiornamento. Lo facciamo controllando i percorsi e la proprietà dei metodi nei loro endpoint. Questo può essere fatto inviando una richiesta OPTIONS separata dalle singole rotte, ma un modo più comodo, è quello di inviare una richiesta GET per il percorso di indice di /wp-json, come abbiamo fatto nella parte precedente della serie.

L'invio di una richiesta GET per il percorso /wp-json restituisce un oggetto contenente tutti i percorsi e i relativi endpoint nella proprietà routes.

Routes

È in questi percorsi individuali che possiamo verificare se una risorsa specifica supporta metodi POST, PUT e DELETE. Cominciamo analizzando la risorsa Post.

La risorsa Post espone i dati con i seguenti due percorsi:

Il primo punto del percorso per l'insieme dell'oggetto post e la sua proprietà metodo sono come segue:

Questa proprietà metodo indica che il percorso di /posts supporta i metodi rispettivamente GET e POST per il recupero e la creazione di dati .

Per il percorso /post/(?P<id>[\d]+), che punta a una singola risorsa Post, la proprietà metodo è come segue:

Come potete vedere nel codice precedente, /post/(? P<id>[\d]+)  il percorso supporta i metodi GET, POST, PUT, PATCH e DELETE.

Esaminando entrambe le rotte sopra citate, possiamo concludere che il percorso di /posts supporta la creazione e recupero delle risorse. E il percorso /posts/(? P<id>[\d]+) supporta l'eliminazione, nonché l'aggiornamento e il recupero delle risorse. Anche se supporta il metodo POST, questo percorso non supporta la creazione di risorse come vedremo in un esempio qui sotto.

Quindi, i percorsi che puntano a una singola risorsa non sono utilizzabili per creare contenuti, anche se supportano il metodo POST. Infatti, per questi percorsi, vengono utilizzati i metodi POST, PUT e PATCH per aggiornare il contenuto nell'API REST WP.

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

  • Possiamo verificare quali percorsi supportano i metodi  GET, POST e DELETE  inviando una richiesta OPTIONS.
  • I percorsi che fanno riferimento a una singola entità non possono essere utilizzati per creare contenuto. Vengono utilizzati per aggiornare il contenuto, anche se supportano il metodo POST.

Dopo aver analizzato diversi itinerari, siamo pronti per creare il contenuto utilizzando l'API REST di WP, e inizieremo esplorando la risorsa Posts.

Creazione e aggiornamento di un Post

Creiamo un post inviando una richiesta di test da Postman o qualsiasi altro client HTTP. Per effettuare questa operazione, avviate il client HTTP e inviate una richiesta POST al percorso/posts. Ma prima di allora, ricordate che l'aggiornamento, eliminazione e la creazione di risorse richiedono l'autenticazione come utente con diritti di edit_posts. Quindi utilizzeremo il metodo di autenticazione di base che abbiamo visto nella seconda parte di questa serie.

Inizialmente, a scopo di test inviamo una richiesta con un corpo vuoto :

Poiché gli argomenti necessari mancavano nel corpo della richiesta, il server restituirà un errore 400 - richiesta non valida. Verrà restituita la seguente risposta dal server:

bad request

Lo stato della risposta dice  che o il contenuto, il titolo o un estratto sono necessari  per la creazione di un oggetto messaggio. Questi argomenti possono essere inviati con  la richiesta nel corpo della richiesta in uno dei tre modi seguenti:

  1. Come un oggetto JSON
  2. Utilizzando i forms
  3. Come parametri URL

È solo una questione di scelta di utilizzare qualsiasi di questi metodi, e li esamineremo più da vicino più avanti in questo tutorial. Ma adesso utilizziamo il primo metodo per la creazione di un post.

Per inviare argomenti come un oggetto JSON in Postman, passate al tab corpo e selezionare il pulsante di opzione raw. Quindi dal menu a discesa sulla destra, è possibile selezionare l'opzione JSON(applicazione/json) . Nell'area di testo qui sotto, è quindi possibile aggiungere il corpo JSON.

json body

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

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

post created

Lo stato di default di questo nuovo post è bozza. Possiamo aggiornare lo stato, come pure alcune altre proprietà, inviando un'altra richiesta POST, PUT o PATCH. L'ID del post restituito nel mio caso è 232, così ti mando una richiesta all'endpoint seguenti:

Il corpo della richiesta per aggiornare lo stato e la proprietà del contenuto è simile al seguente:

Dopo l'invio della richiesta, il server restituirà uno stato  200 - OK, significa che il post è stato aggiornato con successo.

Nell'esempio precedente, abbiamo incontrato i seguenti tre argomenti per creare un post:

  1. titolo
  2. stato
  3. contenuto

La lista completa di argomenti supportati per la creazione di un post può essere estratta da una semplice richiesta di OPTIONS come segue:

Possiamo quindi controllare la proprietà args nella matrice metodo POST.

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

Creazione e aggiornamento Post Meta

Aggiornamento: Lavorare con post e pagina meta in WP REST API richiede ora un compagno plugin disponibile su GitHub dal team API REST di WP.

Post meta può essere creato mediante l'invio di una richiesta POST al seguente percorso:

Dove (?P<parent_id>[\d]+) è l'ID del post genitore. Utilizzerò l'ID del post che abbiamo creato nella sezione precedente, che è 232.

In modo simile a come inviamo il corpo di una richiesta per creare un oggetto post, cosi un oggetto JSON costituito da due proprietà potrà essere inviato per creare un post meta. Queste due proprietà sono la chiave e il valore.

I valori delle proprietà chiave e valore sono  rispettivamente nome e Bilal.

Invia la richiesta e il server restituirà un codice di stato 201 - creato, mostrando che il post meta è stato creato correttamente. L'oggetto di meta post appena creato verrà restituito anche nella risposta:

post meta object

Siete pregati di notare che al momento della stesura di questo tutorial, l'API REST di WP non supporta valori integer per la creazione di post meta.  Se si tenta di inviare un valore integer nell'oggetto JSON per la creazione di post meta,  verrà restituito dal server un codice di stato 400 - richiesta non valida.

Nota le virgolette mancante intorno al valore 12345. La risposta restituita sarà simile al seguente:

bad request

Così qualsiasi cosa invii nella richiesta per creare un post meta dovrebbe essere in formato stringa.

Creazione di dati e metodi di aggiornamento

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 REST di WP fornisce per la creazione e l'aggiornamento dei dati.

Invio di dati come parametri URL

Il modo più semplice per inviare i dati attraverso la richiesta è di inviarlo come parametri URL. Si consideri la seguente richiesta POST per la creazione di un post:

La richiesta di cui sopra invia due parametri al server per il titolo e il contenuto del post.

Allo stesso modo, per la creazione di post meta per un post che ha un ID di 232, usiamo la seguente richiesta POST:

La richiesta di cui sopra verrà creato il seguente oggetto di meta:

meta object

Questo metodo è più adatto quando i parametri sono stringhe brevi, come nell'esempio precedente. Ma come il numero di parametri e la lunghezza del loro valori aumenta, diventa difficile gestirli come parametri URL.

Invio di dati come un oggetto JSON

Utilizzando questo metodo, prendiamo gli argomenti come una coppia chiave/valore in un oggetto JSON per farli passare lungo la richiesta. Fino ad ora, abbiamo utilizzato Postman per inviare richieste al server. Oggi diamo un'occhiata a come possiamo realizzare questo metodo utilizzando HTML e jQuery.

Si consideri il seguente semplice form che si compone di tre campi per il titolo, lo stato e il contenuto:

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

Presentazione del modulo di cui sopra, inviamo una richiesta AJAX per il percorso di /wp/v2/posts. Il metodo di jsonData() accetta un'istanza di jQuery del modulo HTML e converte i dati in formato JSON. Questi dati JSON viegono quindi utilizzati nella proprietà data del metodo $.ajax(). Inoltre, impostiamo il tipo di contenuto su application/json utilizzando la proprietà contentType.

Prima di inviare la richiesta, abbiamo impostato l'intestazione per includere l'intestazione di Autorizzazione con il metodo di autenticazione di base. Abbiamo già imparato a impostare e utilizzare il metodo di autenticazione di base nella seconda parte di questa serie.

Infine, la richiesta viene inviata al percorso /wp/v2/posts e viene creato un nuovo post. Quest'oggetto post appena creato viene restituito dal server come risposta e dobbiamo semplicemente accedere alla console all'interno del metodo success().

Nell'esempio precedente viene illustrato l'utilizzo del formato JSON per inviare i dati attraverso la richiesta. L'origine di questo oggetto JSON può essere nulla oltre a un modulo HTML, a seconda dell'architettura dell'applicazione.

 Siete pregati di notare che per funzionare correttamente il codice sopra riportato , potrebbe essere necessario impostare il campo intestazione Access-Control-Allow-Headers per includere i valori Authorizazion e Content-Type. Questo può essere fatto aggiungendo il codice seguente nel file. htaccess di WordPress:

Esaminiamo ora l'invio di dati tramite moduli HTML.

L'invio di dati tramite Form

L'ultimo modo di invio dei dati attraverso la richiesta è utilizzando i moduli HTML. Questi moduli devono contenere campi con l'attributo name. L'attributo name serve come nome di un argomento come titolo, lo stato, contenuto, ecc. I valori di questi campi costituiscono il valore di questi argomenti.

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

Il codice sopra riportato è lo stesso dell'esempio precedente, tranne per il fatto che abbiamo rimosso il metodo di jsonData() e ora stiamo inviando i dati del modulo in formato di stringa utilizzando il metodo Serialize() di jQuery. Il codice jQuery sopra utilizza il contenut type predefinito application/x-www-form-urlencoded che invia i dati sotto forma di una stringa gigante con argomenti separati dal & segno e i relativi valori viene assegnato utilizzando il segno =. Questo un po' assomiglia all'invio di dati come parametri URL, a meno che non esponga i dati. Si tratta di un modo efficace per inviare i dati se i dati contengono solo caratteri alfanumerici.

Per inviare dati binari (non alfanumerico), usiamo il Content type multipart/form-data Questo metodo può essere utilizzato se abbiamo bisogno di caricare le immagini o altri file utilizzando l'API REST di WP.

Per inviare dati del modulo Postman, si può passare alla scheda Body e quindi utilizzare opzione dati del modulo o x-www-form-urlencoded.

postman

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

Informazioni dettagliate sui diversi tipi di form possono essere trovati nelle specifiche W3C.

Per il caricamento dei Media utulizzeremo il content type multipart/form-data

Ora che abbiamo esaminato il tipo di modulo x-www-form-urlencoded, che invia i dati sotto forma di una stringa, cominciamo ad esplorare una forma più avanzata di tipo codifica, cioè multipart/form-data .

Il tipo di contenuto della multipart/form-data è utilizzato quando si lavora con dati binari, e quindi può essere utilizzato per caricare immagini o altri tipi di file sul server.

Nell'esempio seguente, usiamo un semplice form HTML che consiste di un input [type = "file"] e un po' di jQuery per caricare immagini sul server utilizzando il percorso di /wp/v2/media.

Si consideri il seguente modulo HTML:

Il seguente JavaScript verrà eseguito quando viene inviato il modulo di cui sopra:

Qui otteniamo innanzitutto un'istanza di jQuery della forma e il campo di input. Quindi dobbiamo inizializzare un nuovo oggetto FormData. L'interfaccia FormData fornisce un modo per costruire un insieme di campi di form con coppie chiave/valore e utilizza lo stesso formato come il tipo di codifica multipart/form-data.

Quando il form viene inviato, impediamo la sua presentazione chiamando il metodo .preventDefault() sull'oggetto dell'evento. Dobbiamo quindi aggiungere un nuovo campo all'istanza formData utilizzando il metodo .append(). Il metodo di .append() accetta due argomenti per il nome e il valore del campo. L'API REST di WP applica l'attributo name del campo del file di input per essere file. Ecco perché abbiamo impostato il primo argomento — il nome — per essere file, e per il secondo argomento si passa un oggetto blob file facendo riferimento all'elemento input.

Per impostazione predefinita, i dati passati nella proprietà dei dati del metodo jQuery.ajax() viegono trasformati in una stringa di query. Poiché stiamo caricando un file immagine, non vogliamo che ciò accada, e per tale scopo impostiamo la proprietà processData su false. Impostiamo anche la proprietà contentType su false per impedire che application/x-www-form-urlencoded sia inviato al server come tipo di contenuto predefinito.

E infine, impostiamo l'intestazione di autorizzazione per autenticarci come utente con privilegi di edit_posts.

Assicuraratrevi di eseguire il suddetto script all'interno di un server. Se tutto va bene e viene caricato il file, è necessario che il server restituisca l'oggetto multimediale appena creato.

media object

Questa immagine può essere impostata come un'immagine consigliata per un post.

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

Eliminazione di dati con l'API REST di WP

Eliminazione di dati con l'API REST di WP è semplice come l'invio di una richiesta di DELETE a una particolare risorsa.

Se abbiamo bisogno di eliminare un post che ha ID10, inviamo la seguente richiesta di ELIMINAZIONE:

Questo sposterà il post nel Cestino, ma senza eliminarlo definitivamente. Per eliminare definitivamente un post, usiamo l'argomento force:

Notate che l'argomento force è richiesto quando un'eliminazione di una risorsa che non supporta la cestinazione. Esempi di tali risorse sono post meta e media.

Detto questo, possiamo concludere ora il nostro articolo.

Qual è il prossimo?

In questa lunga esercitazione, abbiamo visto la creazione, l'aggiornamento ed eliminazione di diversi tipi di risorse utilizzando l'API REST di WP. Abbiamo imparato a conoscere modi diversi per inviare i dati attraverso la richiesta, compreso l'invio di dati come parametri URL, in formato JSON e utilizzando i moduli. Alla fine del tutorial, abbiamo imparato a conoscere l'eliminazione di risorse mediante l'invio di una richiesta di DELETE.

Nell' articolo successivo e finale della serie, impareremo la struttura interna dell'API REST di WP e le relative classi. Impareremo anche a estendere l'API per modificare le risposte del server. Ci vediamo nella parte successiva della serie — Restate sintonizzati...

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.