Quando si crea un sito Web o un'applicazione Web, è piuttosto comune che sia necessario inserire dati da siti o applicazioni di terze parti. Se quel sito o applicazione ha un'API, questo è un modo eccellente per ottenere i dati necessari. Quindi, diamo un'occhiata a come farlo con WordPress.
Prima di entrare nel merito, assicuriamoci di essere in grado di accelerare con un paio di cose, iniziando con quello che è un'API.
Ai fini di questo tutorial, quando diciamo "API" (interfaccia di programmazione dell'applicazione) intendiamo specificamente quali classi di Wikipedia come "API Web":
Un'API Web lato server è un'interfaccia programmatica a un sistema di messaggi di richiesta-risposta definito, in genere espresso in JSON o XML, che viene esposto tramite il web, più comunemente mediante un server Web basato su HTTP.
Per dirla in modo più semplice: un'API è un modo per un'applicazione di chiedere a un'altra applicazione informazioni predefinite nel formato JSON o XML (più spesso), su un URL Web standard.
Fatto? Ok, il prossimo ...
Effettuare una richiesta a un'API può comportare una serie di passaggi e si consiglia di aggiungere passaggi aggiuntivi come il controllo degli errori, la memorizzazione nella cache, la convalida, ecc..
Wikipedia definisce una funzione Wrapper come segue:
Una funzione wrapper è una funzione in un programma per computer il cui scopo principale è chiamare una seconda funzione con un calcolo aggiuntivo minimo o nullo. Questo è anche noto come delega dei metodi. Le funzioni wrapper possono essere utilizzate per un numero di scopi.
Quella definizione potrebbe far sembrare un po 'come se i wrapper fossero solo codice ridondante, ma in realtà sono lontani da esso.
La creazione di un wrapper per un'API ci consente di essere gentili con tutti. Lasciatemi spiegare:
I wrapper rendono le API compatibili con gli sviluppatori e API-friendly.
Quindi le cose particolari che avremo per gestire la nostra API sono:
Faremo anche queste cose in un modo compatibile con WordPress, come l'utilizzo dei transitori per il caching e wp_remote_request
per l'invio delle richieste API.
L'API che useremo per questo tutorial è l'API Envato Marketplace. Questa API fornisce informazioni sugli articoli e gli utenti sui marketplace Envato, come ThemeForest, CodeCanyon e altri.
Baseremo il nostro sviluppo su Public Set, visto nella documentazione dell'API di Envato Marketplace. Inoltre, nota la colonna TTL (time to live), che è essenzialmente il "rate limit" per questa API. Poiché i dati cambiano solo con questa frequenza, non c'è motivo di richiedere un determinato set più spesso rispetto al TTL specificato.
Quindi iniziamo a costruire la classe base per comunicare con questa API.
Perché questo alla fine sarà all'interno di un plug-in di esempio, che potremo ottenere in seguito, creeremo quella struttura di file e costruiremo il wrapper API all'interno.
Il nostro plug-in mostrerà i risultati del set di API "random-new-files", quindi chiameremo "Wptuts + Random New". Quindi dentro la tua wp-content / plugins / directory, andare avanti e creare una directory chiamata wptuts-random-nuovo.
Ora all'interno di quella directory, crea una nuova directory chiamata Envato-api-wrapper, e un file all'interno di quello chiamato class-Envato-api-wrapper.php. L'intera directory sarà quindi in grado di essere copiata in altri progetti che devono utilizzare questa API anche in futuro.
Apri il * Classe Envato-api-wrapper.php file, e cominciamo.
Per prima cosa, definiamo la nostra classe:
Avremo anche bisogno di un modo semplice per testare questo wrapper mentre lo costruiamo, senza dover caricare tutto WordPress. Quindi quello che ho fatto, è solo creare un
index.php
file nel Envato-api-wrapper directory, con il seguente contenuto:Ora dovresti essere in grado di navigare
http: // localhost / wp-content / plugins / wptuts-random-new / Envato-api-wrapper /
(sostituisci "localhost" con il tuo ambiente di sviluppo). Tuttavia non dovresti vedere nulla, perché l'involucro non fa ancora nulla. Se si vede comunque un errore, ricontrolla il codice.Nota: non dimenticare di rimuovere questo file o cancellarlo, prima di passare alla produzione!
3. Dove inviare le richieste
La prima cosa di cui avrai bisogno prima di fare una richiesta a un'API, è l'URL di base da utilizzare. Questo URL avrà quindi varie informazioni aggiunte ad esso prima di inviare la richiesta.
Nel caso dell'API Envato Marketplace, useremo il seguente URL:
http://marketplace.envato.com/api/edge/set.jsonIn questo URL ci sono due bit di informazione variabili principali:
edgde
eimpostato
.La posizione di
edgde
rappresenta la versione dell'API che vogliamo utilizzare e, in particolare, la versione più recente. Sarà lo stesso in tutte le richieste, tuttavia se qualcosa cambia e volevamo usare una versione precedente, potremmo scambiarla perv3
invece per esempio.La posizione di
impostato
rappresenta il set di dati effettivo che stiamo richiedendo. La parola "set" è un segnaposto e lo sostituiremo con i dettagli pertinenti quando effettui una richiesta specifica.Aggiungiamo una proprietà di
$ api_url
alla nostra classe con questo valore:Si noti che abbiamo indicato che questa proprietà è '
protetta
'. Lo abbiamo fatto perché non vogliamo che l'URL venga modificato direttamente da un altro codice al di fuori del nostro wrapper.4. Fare una richiesta
Prima di provare a fare una richiesta specifica, aggiungeremo un metodo generico alla nostra classe che gestirà ogni richiesta. Lo chiameremo
remote_request
, e tutto ciò di cui avrà bisogno è un URL per inviare la richiesta a.funzione protetta remote_request ($ url) // In primo luogo, se l'URL è vuoto, non inviare una richiesta if (vuoto ($ url)) return false; // Effettua la richiesta $ request = wp_remote_request ($ url); // Controlla che WordPress sia stato in grado di inviare la richiesta, altrimenti l'errore se (is_wp_error ($ request)) echo $ request-> get_error_message (); restituisce falso; // Decodifica la risposta in modo che possiamo usarla $ data = json_decode ($ request ['body']); if ($ request ['response'] ['code'] == 200) return $ data; else return false;Nota che di nuovo abbiamo indicato che questo metodo è '
protetta
', per evitare che venga chiamato direttamente al di fuori della nostra classe.Ora per essere in grado di verificare che la richiesta funzioni, aggiungeremo il nostro primo metodo API. In questo caso, andremo con il
random-nuovi-files
set, che è quello che useremo più avanti nel nostro plugin di esempio.Aggiungi il seguente metodo alla nostra classe:
public function random_new_files ($ marketplace) // Crea un URL per questa richiesta sostituendo il segnaposto 'set' con il set e tutti i parametri richiesti. In questo caso, lo slug di un marketplace Envato $ url = preg_replace ('/ set / i', 'random-new-files:'. $ Marketplace, $ this-> api_url); // Invia una richiesta all'API $ results = $ this-> remote_request ($ url); restituire $ risultati;Per testare questo nuovo metodo e per estensione il metodo di richiesta API, aggiungere la seguente riga al nostro debug index.php file:
eco ''. print_r ($ envato_api-> random_new_files ('themeforest'), true). '';Ora dovresti ottenere l'output nel tuo browser in questo modo:
stdClass Object ([random-new-files] => Array ([0] => stdClass Object ([id] => 4860464 [item] => Empire - Business, Portfolio HTML 5 Template [url] => https: // themeforest.net/item/empire-business-portfolio-html-5-template/4860464 [user] => designthemes [thumbnail] => http://1.s3.envato.com/files/57931279/thumb-html. png [vendite] => 0 [valutazione] => 0.0 [costo] => 15.00) ... [9] => stdClass Object ([id] => 4852371 [elemento] => eplie | Mobile HTML / Css Portfolio Template [url ] => https://themeforest.net/item/eplie-mobile-htmlcss-portfolio-template/4852371 [utente] => cosmincotor [thumbnail] => http://1.s3.envato.com/files/57831617 /thumbnail.png [vendite] => 3 [valutazione] => 0.0 [costo] => 8.00)))Supponendo che tu abbia visto qualcosa di simile a quanto sopra, significa che funziona e hai recuperato i dati dall'API. Successo!
Successivo: memorizzazione nella cache, gestione degli errori e un widget
Ora abbiamo ottenuto le basi del wrapper, le cose sono in corso. Nella parte successiva, completeremo il wrapper e costruiremo un widget che lo utilizza.
Inoltre, tieni presente che mentre questo wrapper viene creato per l'API di Envato Marketplace, lo stesso concetto (e molto dello stesso codice fino ad ora) può essere utilizzato per creare un wrapper per qualsiasi API RESTful.
Fateci sapere nei commenti quali idee avete per lavorare con API e WordPress.