Uvod

API ili Application Programming Interface je sučelje za programiranje aplikacija. U svojoj srži, to je skup klasa, funkcije, konstante koje programeri slijede tako da se mogu služiti uslugama ili resursima operacijskog sustava ili nekog drugog složenog programa kao standardne biblioteke rutina (funkcija, procedura, metoda), struktura podataka, objekata i protokola. Korištenjem API-ja omogućava se programerima koristiti rad drugih programera štedeći vrijeme i trud koji je potreban da se napiše neki složeni program, pri čemu svi programeri koriste iste standarde. Napretkom u operacijskim sustavima, osobito napretkom u grafičkom korisničkom sučelju API je nezaobilazan u stvaranju novih aplikacija. Umjesto da se programi pišu novi iz temelja, programeri nastavljaju na radu drugih. API nije vezan za nijedan određen jezik, može biti i u PHP-u, Javi, C-u. Bilo da je riječ općenito o API-ju ili PHP API-ju, jedno je zajedničko, svi koriste HTTP protokol koji podrazumijeva GET i POST metode. Trenutni standard za odgovor u API-ju je JSON, iako se još koristi i XML.

Kako bi lakše razumjeli što je to točno API pokušati ćemo objasniti na sljedećem primjeru. Na svojim pametnim telefonima imamo aplikaciju za vrijeme. Ta aplikacija se mora redovito ažurirati ili osvježavati. Aplikacija za vrijeme tada putem POST metode pošalje zahtjev na API da dobije najnovije rezultate. Kada aplikacija za vrijeme dobije nove rezultate ona ih prikaže i tada mi znamo kakvo će biti vrijeme. Sve mobilne aplikacije rade na nekom API-ju koji se vrti na određenom serveru. Kao što je već ranije spomenuto, API može biti napisan bilo kojim programskim jezikom.

PHP API predstavljaju sučelja za programiranje aplikacija pisana u PHP programskom jeziku. Uz PHP API veže se pojam RESTful API koji služi kao poboljšanje za sve API-je u PHP-u. REST (Representational State Transfer) je postao standard u dizajniranju i razvijanju web API-ja. U suštini to je veza klijent-server gdje se korisnički zahtjevi ne spremaju na strani poslužitelja (nema sesija). Nadalje, svaki zahtjev sadrži sve potrebne informacije kako bi poslužitelj potvrdio korisnika kao i bilo kakve podatke o sesiji koji također moraju biti poslani.

REST koristi HTTP zahtjeve kako bi se pozicionirao u postojeću HTTP arhitekturu. Ove operacije se sastoje od sljedećih metoda:

GET - koristi se za osnovne zahtjeve prema poslužitelju

PUT - koristi se za izmjenu već postojećih objekata na poslužitelju

POST - koristi se za stvaranje novog objekta na poslužitelju

DELETE - koristi se za brisanje objekta na poslužitelju

Izrada ljubavnog kalkulatora

Sada kada smo naučili što je API, od čega se sastoji te za što se koristi, izraditi ćemo jednostavnu aplikaciju korištenjem PHP API-ja. To će biti zabavni ljubavni test koji će u postotcima pokazati koliko se dvije osobe vole. Dakle, izrađujemo ljubavni kalkulator.

Za početak je potrebno izraditi običan HTML dokument i nazvati ga jednostavniAjax.html

Slika 1. Prvi dio HTML dokumenta

Na slici iznad vidimo kako smo unutar tijela dokumenta upisali dva input elementa. U ovom slučaju input elementi služe za upisivanje vrijednosti (imena osoba) na temelju kojih će se kasnije izračunati postotak za ljubav. Ispod njih stavljamo poveznicu na istu stranicu (#), klikom na koju se poziva AJAX i izračunava se postotak ljubavi.

U ovom trenutku vrlo je bitno da znamo na koji način AJAX radi, iz tog razloga dobro proučimo sljedeću sliku.

Slika 2. Prikaz kako funkcionira AJAX

Dakle, da razjasnimo, web-aplikacija Ajax na početku pokreće svoj engine u obliku JavaScript koda koji se najčešće stavlja u skriveni HTML okvir. Ovaj JavaScript kôd generira korisničko sučelje te po potrebi asinkrono komunicira s poslužiteljem što omogućuje veću interaktivnost pri radu korisnika u aplikaciji. Svaka korisnička aktivnost koja bi prije rezultirala generiranjem HTTP zahtjeva prosljeđuje se engineu Ajaxa. Tako JavaScript kôd obrađuje sve korisničke akcije koje nužno ne zahtijevaju komunikaciju s poslužiteljem (npr. validacija podataka, promjena podataka u memoriji i navigacija). Ako je nužna komunikacija s poslužiteljem zbog potrebe za složenijom obradom, poput izvršavanja dodatnog koda ili dohvaćanja novih podataka, engine Ajaxa komunicira asinkrono s poslužiteljem, pri čemu se najčešće koristi XML protokol pa se nikad primjetno ne prekida korisnički rad u web-aplikaciji.

Nakon što smo se upoznali s radom Ajaxa, dodajemo novi div element.

<div id="rezultatLjubavi">

</div>

Slika 3. Dodavanje div elementa za prikaz rezultata

Ovaj element ostavljamo prazan, jer kada server vrati podatke izračuna, u funkciji “vratioServer” koju ćemo kasnije definirati, ti će se podaci prikazati unutar div elementa na kojemu je id “rezultatLjubavi”.

Zatim slijedi dodavanje JavaScript dijela pomoću kojega će se pozvati AJAX nakon što kliknemo na poveznicu 'Izračunaj'.

Slika 4. Pozivanje AJAX-a

Na slici 4. Vidimo kako AJAX pozivamo vrlo lako, u samo nekoliko linija koda, koristeći JavaScript frameworka jQuery. U nastavku ćemo detaljnije objasniti što koja linija kod predstavlja.

$ (function(){

→Standardni izraz za jQuery unutar čijeg bloka se definiraju izrazi

$("#pozoviAJAX").click(function(){

→Definiranje funkcije koja će se izvršiti nakon klika na element s id-em pozoviAJAX

var parametri={"on":$("#on").val(),"ona":$("#ona").val ()};

parametri = JSON.stringify(parametri);

→Definiranje varijabla parametri koja za vrijednosti uzima vrijednost inputa koji imaju id “on” i “ona”

$.ajax({
      type: "POST",
      url: "ljubavAPI.php,
      data: "parametri=" + parametri,
      success: function(vratioServer) {

→TYPE služi za definiranje načina slanja podataka. Ukoliko smo stavili da bude POST, u php-u ćemo koristiti $_POST da bi pokupili te podatke. Da smo stavili GET, koristili bi $_GET
→URL je putanja do PHP dokumenta koji izvršava akciju.
→DATA služi za slanje podataka
→SUCCESS definira funkciju koja će se izvršiti nakon što je izvršen AJAX

var rez = JSON.parse ( vratioServer );
 $("#rezultatLjubavi).append(on.value + " i " + ona.value +
 " se vole " + rez + "%")

→Definiramo varijablu pomoću koje će se prikazati rezultat izračuna unutar elementa koji ima id 'rezultat ljubavi'

Za kraj pozatvaramo elemente <body> i </html> ukoliko već nismo. I to je to! Naš HTML dokument je gotov i ovako izgleda u pregledniku.

Slika 5. Izgled HTML dokumenta u pregledniku

Izgled ljubavnog kalkulatora, ukoliko želite, možete sami urediti primjenom CSS svojstava ili ubacivanjem slika.

Polovina posla je obavljena! Slijedi kodiranje u PHP-u. U nastavku ćemo napisati kod koji će izračunavati postotak ljubavi između dvije osobe.

I u drugom dijelu započinjemo s izradom novog dokumenta, ovaj puta će to biti PHP dokument koji ćemo nazvati ljubavAPI.php

PHP izvorno podržava pretvaranje podataka u JSON format iz PHP varijable i obrnuto pomoću proširenja json. Mi ćemo u ovom primjeru znakovni niz koji sadrži JSON podatke pretvoriti u PHP varijablu pomoću funkcije json_decode():. Za početak ćemo napisati početnu oznaku php dokumenta i zatim dekodirati varijablu $parametri pomoću JSONA-a.

Slika 6. Pretvaranje JSON podataka u PHP varijablu

Sljedeći korak je kreiranje funkcije 'ljubav' koja uzima dva parametra $ime1 i $ime2. Unutar nje stvaramo novu varijablu $sveSkupa koja ima vrijednosti $ime1 i $ime2. Također, stvaramo i novu varijablu $nizBrojeva, ona će za sada ostati prazna, ali kasnije u nju dolaze podaci.

Slika 7. Funkcija ljubav

Ispod toga, dodajemo for petlju, ona uspoređuje znakove te radi sve dok ne prođe sve znakove iz varijable $sveSkupa.

Slika 8. Prikaz for petlje

Vrijednosti koje petlja izračuna se povećavaju za jedan te se nalaze u varijabli $ukupno koja će na kraju objaviti vrijednost arraya $nizBrojeva kojeg smo u prošlom primjeru ostavili praznim.

$izračun = array ();
$b;

Slika 9. Prazni array

Prikazani dio koda kaže kako je $izracun prazni array kojemu će se kasnije dodati vrijednost.

Slika 10. Prikaz do petlje

U do petlji se uz postavljene uvjete izvodi izračun na temelju broja znakova (count) i uvjeta koje smo postavili sve dok je zbroj znakova ili elemenata u arrayu veći od dva.

Pri kraju petlje $nizBrojeva se izjednačava sa $izracun koji je pretvoren u prazan array.

Slika 11. Izjednačavanje

Za kraj ljubavAPI.php imamo još jednu petlju koja ima dva slučaja. U oba slučaja se vrijednosti zbrajaju i vraća se konačni rezultat. Na samom kraju pozivamo funkciju “ljubav” ali ju enkodiramo pomoću JSON-a. Opet, funkcija “ljubav” ima dva parametra, “on” i “ona”.

Slika 12. Petlja s dva slučaja

Za kraj, kako bi smo dobili JSON reprezentaciju PHP varijable, upotrijebiti ćemo funkciju json_encode():

Slika 13. Kraj dokumenta ljubavAPI.php

Ovako naša aplikacija LJUBAVNI KALKULATOR sada izgleda u pregledniku.

Slika 13. Ljubavni kalkulator

Slika 14. Upisivanje vrijednosti za izračun

Slika 15. Izračun

Dakle, klikom na poveznicu 'Izračunaj' dobili smo povratnu informaciju koliko se Marko i Marija vole u postotcima.

Literatura

Uvod u PHP

URL: http://php.com.hr/77

Definitions: API, PHP, FTP, mySQL and more.

URL: http://myrepono.com/faq/53

Creating a RESTful API with PHP, 2013.

URL: http://coreymaynard.com/blog/creating-a-restful-api-with-php/

Nixon, Robin. Learning PHP, MySQL, JavaScript, CSS and HTML5: a step-by-step guide to creating dynamic websites. Cambridge: O’Reilly, 2014.