WordPress REST API

Introduzione

Come tutti i sistemi moderni, anche WordPress ha finalmente ceduto al fascino delle API (acronimo di Application Programming Interface), ovvero un insieme di strumenti che permetterà agli sviluppatori di accedere alle funzionalità e alle risorse di WordPress:

  • Posts e Post Types (comprese le revisioni, commenti e status)
  • Categories, Tags e Taxonomies
  • Pages
  • Media
  • Users
  • Settings

Vediamo ora di approfondire qualche termine specifico di questa filosofia che era stata già introdotta nei primi anni ’90 quando si diffusero i paradigmi di elaborazione distribuita basati sull’invocazione di API per fare interagire moduli software dispiegati su differenti server.

Architettura REST

Con il termine REST (Representational State Transfer) si indica un’architettura di un sistema informatico per lo scambio di dati. Non parliamo di uno standard di fatto o di un protocollo ma di un metodo per sviluppare Web Services.
Questa architettura va in controtendenza rispetto alla consueta concezione che abbiamo di internet basato su richieste HTTP effettuate tramite il nostro browser e sulla risposta del sistema remoto costituita per lo più dalla generazione di una pagina HTML da consultare con lo stesso browser che ne ha generato la richiesta.
In questa architettura, invece, i sistemi processano informazioni che scambiano anche in modo autonomo con altre sistemi grazie alle API. Google ad esempio mette a disposizione numerose API per rendere accessibili le informazioni su una serie di servizi proprietari: Google Maps, Youtube, Calendar ecc ecc.
L’architettura REST si basa sostanzialmente su 5 principi fondamentali che devono essere rispettati (se un sistema è conforme ai vincoli REST, viene definito RESTful):

1) Le risorse:

rappresentano gli elementi che possono essere letti o aggiornati (annunci, ditte, anagrafiche) in un Server RestFul e che sono identificati in maniera univoca da un URL:

Nell’elenco abbiamo degli esempi di risorse, un annuncio o una ditta specifica, un cliente specifico, un elenco di recensioni oppure un elenco di ditte di Milano. Diamo per scontato che questi link generino delle chiamate senza necessità di autenticazione in quanto informazioni pubbliche.

2) Utilizzo dei metodi HTTP:

i metodi HTTP servono per specificare cosa si vuole fare delle risorse specificate nell’URL. Nel precedente paragrafo abbiamo solo interrogato il nostro Server RESTFul; in tutto i metodi HTTP sono quattro:
GET per richiedere al server un determinato set di dati;

POST per creare un nuovo oggetto all’interno di un DB;

PUT per modificare o sostituire un oggetto all’interno di un DB;

DELETE per cancellare un oggetto contenuto all’interno di un DB.

3) Risorse autodescrittive:

il risultato di una richiesta REST deve essere di tipo descrittivo (JSON, XML oppure un altro formato proprietario) e non è sempre collegato alla struttura di un DB come vedremo nel prossimo paragrafo.

4) Collegamenti tra risorse:

nell’architettura REST i collegamenti tra le varie risorse avvengono tramite URL. Cosi, se ad esempio richiedo con un GET l’annuncio numero 43:

I dati relativi alla ditta e alla città saranno raggiungibili tramite URL:

<annuncio>
<id>43</id>
<data>01/01/2016</data>
<ditta rif=”https://example.com/ditta/2"/>
<citta rif=”https://example.com/citta/13"/>
</annuncio>

5) Comunicazione stateless:

è una caratteristica del protocollo HTTP e indica il fatto che una richiesta client non ha nessuna relazione con le richieste fatte precedentemente o successivamente. Le applicazioni RESTful devono rispettare lo stesso principio. I benefici sono diversi ma il più importante è la scalabilità in quanto il non dover tener memoria delle altre richieste permette la distribuzione dei dati su sistemi distribuiti e il bilanciamento automatico del carico di lavoro.

WP REST API

La REST API in WordPress è quindi un interfaccia di comunicazione che ci permette di far interagire WordPress con qualunque altra applicazione. La loro importanza è dovuta al fatto che offrono la possibilità di integrare un semplice CMS con qualunque altro applicativo web o dispositivo mobile in maniera semplice e sicura.

WordPress stesso è nato come una piattaforma dedicata al personal blogging, e si è evoluto nel tempo diventando un vero e proprio framework. Consideriamo inoltre che oggi il 25% dei siti web sul pianeta girano su WordPress.

Un Endpoint non è altro che l’URL alla quale la nostra applicazione risponde ad una determinata richiesta fatta da uno sistema remoto.

Qui troviamo la documentazione ufficiale e la lista aggiornata di tutti gli endpoints disponibili al momento.

WordPress ha scelto il formato più popolare e versatile per lo scambio di dati tramite chiamate REST, ovvero JSON (JavaScript Object Notation) in quanto meno prolisso rispetto al formato XML. Questo standard viene convenzionalmente ritenuto molto versatile per due motivi: è facilmente comprensibile ed editabile da noi umani e risulta essere facilmente elaborabile dalle macchine.

Ecco un esempio di struttura JSON che descrive tre oggetti employees come un insieme non ordinato di coppie nome/valore:

{“employees”:[
{“firstName”:”John”, “lastName”:”Doe”},
{“firstName”:”Anna”, “lastName”:”Smith”},
{“firstName”:”Peter”,”lastName”:”Jones”}
]}

Come abbiamo già detto precedentemente, una soluzione REST API permette di accedere ai dati salvati su un’installazione WordPress in formato JSON e di sfruttare la classe PHP WP_Query che ci permetterà di interrogare il sistema su post, revisioni, utenti e molto altro. In altre parole, se riusciamo a fare una cosa con WordPress, è probabile che riusciamo a farla anche con REST API.

Il team di WordPress ha di recente deciso di integrare REST API direttamente nel core poichè convinti che il futuro della programmazione si deciderà sul fronte dei Web Services.

L’obiettivo è quello di fare in modo che le informazioni di WordPress possano essere reperite senza conoscere il PHP ma attraverso dei semplici URL (o endpoints) e delle semplici applicazioni che possono risiedere anche su Smartphone/Server/Browser e che siano capaci di leggere il nostro formato JSON ed elaborarle eventualmente.

Ad esempio:

La convenzione prevede una URL formata dal nome del dominio, il prefisso wp-json/ e il nome della risorsa che si intende richiedere. Il primo esempio richiede la lista di tutti gli articoli; il secondo l’utente il cui id=1; il terzo esempio l’articolo con l’id=1; il quarto invece l’elenco di tutti gli allegati.

Per conoscere tutte le risorse disponibili possiamo fare riferimento alla documentazione ufficiale sul sito wordpress.org.

Vediamo ora come sfruttare le WP REST API in un caso concreto PHP. Con questo script eseguiamo una richiesta GET con cui richiediamo tutti gli articoli presenti sull’installazione WordPress. Il contenuto viene inserito in una stringa $json. Successivamente questa stringa json viene convertita in una in un array $data. Infine uso la funzione print_r per visualizzare a schermo il contenuto di un’array senza la necessità di un loop (ciclo).

$json = file_get_contents(“http://localhost/wp-json/posts");
$data = json_decode($json,TRUE);
echo “<pre>”; print_r($data); echo “</pre>”;

Alcune Idee su come utilizzare le WP REST API

a) WordPress come Backend: è possibile dispiegare velocemente il backend di una applicazione che generalmente richiederebbe molto più tempo per realizzarlo e inoltre avremmo:

  • un sistema ottimizzato per gestire ed archiviare i nostri dati;
  • le operazioni CRUD (create, read, update and delete) gia disponibili di default grazie agli endpoint Post, Get, Put, Delete;
  • un’interfaccia pulita e familiare a milioni di utenti;
  • la possibilità di rendere disponibili i dati a qualunque tipo di frontend.

b) Applicazioni mobili per WordPress: grazie alle API, l’utilizzo di WordPress per lo sviluppo di applicazioni mobili diventa più semplice e completo.

c) Altri utilizzi: in generale possiamo dire che se un dispositivo può effettuare una chiamata HTTP, può interagire con WordPress.

Come sfruttare le API di WordPress

Per iniziare a sfruttare tutte le potenzialità delle API di WordPress abbiamo principalmente due opzioni consigliate:

  • Utilizzare il plugin ufficiale WordPress REST API;
  • Attivare il modulo JSON API di JetPack

Entrambe permettono di operare su post, utenti, categorie. Entrambe possono essere estesi e supportare i Custom Post Types nelle chiamate API oppure i campi personalizzati.

FONTE: http://www.wordpressolutions.it/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *