info@giuseppegioe.it

Sviluppare un webservice restful JSON

Se hai la necessità di accedere on line al tuo database da un app ANDROID, IOS oppure Windows PHONE eccoti una semplice guida che si spiega passo come implementare un servizio REST che ti consente di accedere on line al tuo database. L’esempio è stato sviluppato utilizzando Microsoft Visual Studio 2013 Community Edition Con il termine REST (Representational State Transfer) si rappresenta un’architettura di sistema per lo scambio di dati in un’ambiente scalabil e utilizzabile da diversi dispositivi.  Non parliamo di uno standard di fatto o di un protocollo ma di un metodo per sviluppare web services che consente la rappresentazione dei dati in un formato consumabile da diversi dispositivi e ambienti di sviluppo. Infatti, mentre all’inizio internet era concentrato solo su una richiesta HTTP che procedeva a generare una pagina HTML da consultare con un browser adesso le cose sono molto diverse e i server internet processano informazioni che posso scambiarsi con altre applicazioni e aggiornare dati presenti su server diversi sempre con richieste HTTP specifiche. Oggi questa architettura è usata da quasi tutte le società che erogano servizi o strumenti di sviluppo per i loro prodotti, ad esempio Google usa le chiamate REST su moltissime API per richiedere informazioni di qualsiasi genere, ad esempio google maps, youtube, calendar, management API, etc, etc. Anche su Amazon Web Services praticamente ogni servizio esistente può essere configurato o analizzato tramite AWS REST API Altra applicazione fondamentale dei servizi REST la troviamo nell’IOT (Internet delle Cose) perché rende semplice la condivisione e il controllo dello stato di oggetti tramite il web.

REST API – Descrizione generale

L’architettura REST si basa sostanzialmente su cinque principi fondamentali che devono essere rispettati durante la sua definizione, è importante capire questi concetti sia per chi deve solo utilizzare un’ambiente REST e sia per chi vuole costruirci un’applicazione.

RESTFUL JSON1) Le risorse: rappresentano gli elementi fondamentali di un Server RESTful e vengono usate come elementi di elaborazione, ad esempio possiamo avere risorse come clienti, utenti, libri, giochi, server, video e qualsiasi cosa possa avere delle informazioni che possono essere lette o aggiornate. Ogni risorsa deve essere identificata in maniera univoca, e dato che parliamo di WEB non esiste di meglio che un URL.

1) https://example.com/cliente/12345
2) https://example.com/ordine/2014/12345
3) https://example.com/libro/12345
4) https://example.com/video/
5) https://example.com/video?genere=avventura

In questo esempio possiamo vedere una risorsa che rappresenta un cliente, un ordine specifico, un libro, l’elenco dei video disponibili e un elenco video solo di avventura. In poche parole ogni URL rappresenta una risorsa su cui posso essere richiesti diversi tipi di elaborazione, ad esempio le caratteristiche di un libro identificato da un particolare codice ma anche l’elenco di libri scritti da un determinato autore. Se vogliamo fare degli esempi concreti provate a cliccare su uno dei seguenti link e otterrete delle informazioni sulla risorse che andiamo a richiedere, ad esempio il primo link è una richiesta a youtube per richiedere i video con termine di ricerca “amazon”.

Come potete notare vi ho elencato alcuni link che generano informazioni pubbliche, infatti la maggior parte delle chiamate come vedremo anche in seguito necessitano di una autenticazione o di una chiave generata dal servizio stesso. 2) Utilizzo dei metodi HTTP: nel paragrafo precedente abbiamo visto come accedere alle risorse REST ed ottenere le informazioni richieste, però come facciamo per modificarle, aggiungerne di altre o eliminarle ? La risposta è quella di usare sempre lo stesso URL per identificare la risorsa ma cambiare il metodo HTTP con uno dei seguenti valori:

GET Lettura Informazioni risorsa
POST Creazione Nuova risorsa
PUT Aggiornamento Modifica risorsa
DELETE Cancellazione Elimina risorsa

Per chi non lo sapesse ogni richiesta HTTP viene accompagnata da un metodo standard, ad esempio quando indicate sul browser un’indirizzo URL in realtà il browser spedirà la richiesta al server di destinazione con un metodo GET. Ci sono casi ad esempio con i form HTML che vengono utilizzati anche i metodi POST, in ogni caso se usate un qualsiasi codice di programmazione potete specificare il metodo che desiderate.

1) https://example.com/changeBook?id=12345
2) https://example.com/book/12345 con metodo PUT

Se volete divertirvi a testare la differenza tra i vari metodi POST, GET; PUT DELETE potete utilizzare la pagina web www.requestmaker.com che Vi consente di interagire con qualsiasi tipo di servizio RESTFUL. Vi riporto queste due righe che identificano due URL per cambiare ad esempio una risorsa libro, la prima riga non è ammessa in un’architettura REST e rappresenta la chiamata ad uno script specifico, mentre la seconda riga rappresenta la maniera giusta di richiedere una modifica alla risorsa, stesso URL ma utilizzo di un metodo diverso. 3) Risorse autodescrittive: una volta che viene eseguita una richiesta REST il risultato può e deve essere ritornato in un formato descrittivo che non deve essere per forza collegato alla struttura di un database, ad esempio possiamo restituire sempre un formato JSON o XML a prescindere dalla complessità dei dati che hanno generato l’informazione. Nulla vieta di utilizzare un formato proprietario, però per facilitare i client è sempre meglio utilizzare un formato standard come ad esempio JSON. 4) Collegamenti tra risorse: nell’architettura REST i collegamenti delle risorse devono sempre avvenire tramite degli URL e anche le informazioni che compongono le diverse parti di una risorsa devo rispettare questo principio. Ad esempio se richiedo con un GET una risorsa “libro” gli eventuali dati come “autore“, “editore“, etc, etc, devono essere specificati sempre tramite un URL che può essere utilizzato per ottenere altre info. 5) Comunicazione stateless: la comunicazione senza stato è una caratteristica propria del protocollo HTTP e indica il fatto che una richiesta client non ha nessuna relazione con le richieste precedenti o successive. Le applicazioni RESTful devono rispettare lo stesso principio, i benefici sono diversi ma il più importante è la scalabilità, infatti se ogni richiesta rimane svincolata dalle altre può essere eseguita su qualsiasi server che non deve mantenere ricordo storico, questo facilita la distribuzione delle informazioni su applicazioni diverse e il bilanciamento automatico del carico di lavoro.

Formato JSON – Descrizione generale

Abbiamo appena visto che in REST si ottengono e si modificano le informazioni tramite delle chiamate URL particolari. Il formato dei dati che viene scambiato può essere di diversi tipi, però dato che JSON è uno dei più popolari ed è quello che è stato scelto da WordPress per l’integrazione nel core ci soffermeremo solo su questo formato. JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati. Per le persone è facile da leggere e scrivere e per le macchine risulta facile da elaborare con i vari linguaggi di programmazione. La sua popolarità è dovuta al successo di AJAX che permetteva di eseguire del codice asincrono in una pagina HTML che richiedeva ad un un server informazioni specifiche. JSON è basato su due strutture:

  • Coppie nome/valore: In diversi linguaggi, questo è realizzato come un oggetto, un record, un dizionario, una tabella hash, un elenco di chiavi o un array associativo.
  • Un elenco ordinato di valori: Nella maggior parte dei linguaggi di programmazione questo si realizza con un array, un vettore, un elenco o una sequenza.

Qui di seguito vi riporto l’esempio di una struttura JSON che come potete vedere è molto meno prolissa di una sintassi XML e un esempio di codice PHP per farvi vedere con quale semplicità è possibile richiedere una risorsa REST e convertirla in array:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Struttura di esempio per formato JSON
// che può essere generato dopo una richiesta REST
{"employees":[
  {"firstName":"John", "lastName":"Doe"},
  {"firstName":"Anna", "lastName":"Smith"},
  {"firstName":"Peter","lastName":"Jones"}
]}
// Esempio PHP per esecuzione richiesta GET e
// conversione del risultato in un array
$jurl = "https://gdata.youtube.com/feeds/api/videos?q=amazon&alt=json";
$json = file_get_contents($jurl);
$data = json_decode($json,TRUE);

L’esempio di codice PHP riportato non prevede autenticazione, quindi se volete fare delle prove utilizzate degli URL che permettano delle interrogazione pubbliche.

REST API – Autenticazione

Ovviamente non tutte le risorse disponibili su WordPress sono accessibili con chiamata pubblica, molte necessitano di un’autenticazione prima di effettuare la chiamata. Al momento i metodi di autenticazione sono un pochino sparsi con l’installazione di plugin aggiuntivi che trovate nella documentazione sezione autenticazione. Però nel rilascio ufficiale il metodo sarà OAuth 2.0 e sarà disponibile direttamente nel core. Ad esempio chi utilizza già le API di Google o Amazon saprà che si tratta di generare un token che sarà utilizzato in ogni chiamata REST fino alla sua scadenza.

WordPress REST API – Conclusioni

Questo articolo non è stato scritto per spiegare le chiamate REST API con dettagliati esempi di codice, è stato più un tentativo di mettere sulla giusta strada chi utilizza PHP per sviluppare su WordPress e che dovrà nel prossimo futuro fare i conti con questa tecnologia. Spero di aver raggiunto questo obiettivo augurandovi tante belle applicazioni che useranno come protagonista sempre il nostro caro WordPress.

Nel prossimo articolo pubblicheremo un esempio completo di servizio RESTFUL JSON sviluppato in c#. Seguici!

This Post Has 158 Comments

  1. Google

    Wonderful story, reckoned we could combine some unrelated information, nevertheless seriously worth taking a appear, whoa did one study about Mid East has got far more problerms at the same time.

  2. plus size dildo harness

    […]although websites we backlink to beneath are considerably not associated to ours, we feel they’re essentially really worth a go as a result of, so possess a look[…]

  3. stimulating gels

    […]Wonderful story, reckoned we could combine some unrelated information, nonetheless truly worth taking a search, whoa did a single master about Mid East has got far more problerms as well […]

  4. Flexi-Power Anal Vibrator

    […]although internet websites we backlink to below are considerably not associated to ours, we really feel they’re basically worth a go through, so possess a look[…]

  5. Giant Dildos

    […]that will be the finish of this article. Here you’ll discover some web-sites that we believe you will value, just click the links over[…]

  6. افلام سكس

    […]Wonderful story, reckoned we could combine a number of unrelated data, nevertheless genuinely worth taking a look, whoa did a single discover about Mid East has got more problerms also […]

  7. Suction Cup Dildo

    […]although internet websites we backlink to beneath are considerably not related to ours, we really feel they’re basically worth a go by way of, so possess a look[…]

  8. bazooka sour straws

    […]although internet websites we backlink to beneath are considerably not associated to ours, we really feel they are essentially worth a go via, so possess a look[…]

  9. $1 hosting

    […]very handful of websites that take place to become comprehensive beneath, from our point of view are undoubtedly very well worth checking out[…]

  10. dogs temp

    […]just beneath, are various totally not associated internet sites to ours, even so, they may be surely worth going over[…]

  11. PhillyBite

    […]that would be the end of this article. Here you’ll find some websites that we feel you’ll appreciate, just click the hyperlinks over[…]

  12. junk car buyer

    […]that is the end of this post. Here you will come across some sites that we think you will appreciate, just click the hyperlinks over[…]

  13. ninebot

    […]here are some hyperlinks to internet sites that we link to simply because we feel they are really worth visiting[…]

  14. Biz Carlton

    […]although internet sites we backlink to below are considerably not connected to ours, we really feel they are truly really worth a go by means of, so possess a look[…]

  15. call me

    […]please take a look at the sites we stick to, like this a single, as it represents our picks through the web[…]

  16. $0 down car leasing

    […]we like to honor a lot of other internet sites on the net, even if they aren’t linked to us, by linking to them. Under are some webpages really worth checking out[…]

  17. buy hulu outside us

    […]we like to honor a lot of other web web pages on the net, even though they aren’t linked to us, by linking to them. Beneath are some webpages really worth checking out[…]

  18. denver limo

    […]please visit the internet sites we adhere to, such as this one particular, because it represents our picks from the web[…]

  19. FS 19 mods

    […]just beneath, are numerous completely not associated sites to ours, nevertheless, they’re surely really worth going over[…]

  20. cheap smm panel

    […]although web sites we backlink to beneath are considerably not associated to ours, we feel they may be in fact worth a go by way of, so have a look[…]

  21. Box games

    […]that would be the end of this post. Here you will find some web-sites that we think you will appreciate, just click the links over[…]

  22. djkhan

    […]that would be the end of this article. Right here you’ll come across some sites that we think you will appreciate, just click the hyperlinks over[…]

  23. Dance Lessons

    […]very handful of websites that happen to become comprehensive below, from our point of view are undoubtedly properly worth checking out[…]

  24. avatar chat room

    […]we prefer to honor lots of other world-wide-web web sites on the web, even though they aren’t linked to us, by linking to them. Below are some webpages really worth checking out[…]

  25. celine

    […]just beneath, are numerous completely not associated sites to ours, on the other hand, they may be surely worth going over[…]

  26. beauty courses

    […]we like to honor quite a few other net websites on the internet, even though they aren’t linked to us, by linking to them. Under are some webpages really worth checking out[…]

  27. hair academy mumbai

    […]we like to honor a lot of other online web pages around the web, even if they aren’t linked to us, by linking to them. Below are some webpages really worth checking out[…]

  28. jewelry

    […]here are some hyperlinks to internet sites that we link to mainly because we believe they are really worth visiting[…]

  29. YSL

    […]here are some links to internet sites that we link to because we feel they may be worth visiting[…]

  30. سكس اون لاين

    […]although internet websites we backlink to beneath are considerably not associated to ours, we really feel they are really worth a go by means of, so have a look[…]

  31. Interracial Porn

    […]that may be the finish of this article. Here you will locate some web sites that we believe you’ll enjoy, just click the hyperlinks over[…]

  32. Custom Art

    […]we prefer to honor several other web websites on the net, even when they aren’t linked to us, by linking to them. Beneath are some webpages worth checking out[…]

  33. jewelry

    […]Every as soon as in a though we opt for blogs that we read. Listed beneath would be the most current sites that we select […]

  34. Hot Summer Deals

    […]Wonderful story, reckoned we could combine a handful of unrelated information, nonetheless definitely really worth taking a look, whoa did 1 study about Mid East has got far more problerms as well […]

  35. apk download

    […]Wonderful story, reckoned we could combine a number of unrelated data, nonetheless genuinely worth taking a search, whoa did one master about Mid East has got additional problerms also […]

  36. سكس عربي

    […]just beneath, are numerous absolutely not connected internet sites to ours, on the other hand, they may be surely worth going over[…]

  37. den pushkina

    […]check beneath, are some absolutely unrelated web-sites to ours, however, they are most trustworthy sources that we use[…]

  38. mcat audio osmosis

    […]Wonderful story, reckoned we could combine a handful of unrelated data, nonetheless definitely really worth taking a look, whoa did a single study about Mid East has got extra problerms also […]

Comments are closed.