SlideShare a Scribd company logo
1 of 13
API
Stipe Predanić
API
● Application programming interface
● Set naredbi, funkcija, protokola za stvaranje
programa i aplikacija
● U web svijetu – pristupna to ka (end point) u ne jič č
sustav
– Kontrolirana
– Definirana protokolima razmjene
● REST, SOAP, RPC
API
API
Pristupi kako ostvariti API
● Rad s klasi nim pristupom stranicamač
● Normalni na in pristupa kao HTML stranicama, sč
možda formatiranim ispisom
● XML-RPC (XML Remote Procedure call)
● Podaci su kodirani u XML, i postoje standardi kako
se kodiraju podaci
● SOAP (Simple object Access Protocol)
● Nadgradnja nad XML-RPC, vrlo striktno definiran
● REST (Representational State Transfer)
● Nije protokol, nego pristup arhitekturi izrade API-ja
REST
● Principi
● Stateless
● CRUD stil operacija (Create, Read, Update, Delete + estoč
nekakav List)
● Model koristi
– Imenice: URL, stil kao u direktorijima
– Glagole: tip HTTP zahtjeva (GET, POST, PUT, DELETE)
● RESTful
● Potpuno prati sva pravila zadana za REST
● RESTless
● Djelomi no prati pravilač
REST Glagoli
HTTP REST CRUD
GET READ – pročitaj podatke (pojedinačan, ili liste)
POST CREATE – stvori novi podatak u sustavu
PUT UPDATE (Replace) – Zamjena cijelog objekta s drugim
PATCH UPDATE (Modify) – Zamjena dijela objekta s novim
podatkom
DELETE DELETE – obriši podatak
Često postoje svađe oko svrhe POST / PUT / PATCH jer
svi prenose podatke prema serveru. Mnogi RESTless API
servisi imaju samo POST kao glagol za unos i update
podataka.
REST imenice
● URL formatiran u odgovaraju em oblikuć
● Mojsite.com/dogs <- lista svih pasa
● Mojsite.com/dogs/1 <- pas s ID-jem 1
● Mojsite.com/dogs/1,2,5 <- psi s ID 1,2,5
● Objekti na koje se odnose imenice bi trebali biti što
specifi niji za željeno podru je (npr.č č
Mojsite.com/animals <- sve životinje, ali
mojsite.com/cats su ma ke)č
● Postoje sva e oko toga trebaju li imenice biti uđ
jednini ili množini (op enito se preporu a množina)ć č
zahtjevi i odgovori
● Kombinacija glagola i imenice definira što se treba
napraviti
● GET mojsite.com/dogs -> daj listu pasa
● POST mojsite.com/dogs -> poslane podatke spremi pod pse
● DELETE mojsite.com/dogs/3 -> obriši tre eg psać
● Upiti i odgovori mogu i i u bilo kojem formatu (JSON,ć
XML, nešto tre e)ć
● Ako API podržava više formata, dodajte negdje oznaku koji
format želite (primiti ili poslati)
● Npr. GET mojsite.com/xml/dogs ili mojsite.com/dogs.xml
zahtjevi i odgovori
● Odgovori od servera dolaze u obliku HTTP status
kodova i podataka (ako ih ima)
● 200 – sve OK
● 201 – objekt stvoren (kad radite s POST-om)
● 202 – primljen zadatak ali e se sve odraditi asinkrono,ć
negdje u pozadini
● 400 – loš zahtjev
● 401 – neautoriziran pristup
● 404 – nije prona eno ili nije dozvoljen pristupđ
● 410 – resurs (ili podaci o njemu) postoji ali je deaktiviran,
obrisan ili tako
● 500 – API trenutno ima grešku
Autentikacija
● Osim ako ne radite read only API, potrebna je autentikacija
● HTTP BA (Basic authorization)
– Jednostavno, ugra eno u HTTP, ali krajnje nesigurno (npr. Lozinke seđ
prenose plain-text)
● Hashiran password
– Bolje od BA, ali programer mora na klijentskoj strani napisati kod koji eć
hashirati password.
● Oauth
– 1.0a i 2.0 (2.0 je trenutno standard)
– SSL je obavezan (2.0), korisnik dobiva access token od autorizacijskog
servera kojeg onda šalje u svakom zahtjevu
● Token može biti zaka en kao dio URL-a (lošije), ili u headeru (bolje)č
● NEMOJTE SE POUZDATI NA SUSTAV COOKIEA!
Verzioniranje
● Što napraviti u situaciji u kojoj stvarate nove
imenice koje e preuzeti neke funkcionalnostić
postoje ih imenica?ć
● Nemojte naprasno prekinuti rad postoje eg sustava!ć
● Verzioniranje
– Dodajte oznaku verzije u dokumentaciju i u svoj sustav
– Može se dodati u URL (nije isto RESTful, ali se esto koristi)č č
● Mojsite.com/api/v1/dogs i mojsite.com/api/v2/dogs
– Može se dodati polje u header pri zahtjevu
● Api-version: 2
– Može se zahtjevati odre eni tip podatka (postoji odgovaraju eđ ć
polje u headeru pri zahtjevu)
● Accept: application/vnd.mojsiteapi.v2+json
Zaklju akč
● API-ji su potrebni za komunikaciju izme u strojevađ
● Puno je sitnih detalja na koje treba paziti
● Dobra dokumentacija je pola API-ja
– U ite od najboljihč
– Twitter https://dev.twitter.com/rest/public
– Facebook https://developers.facebook.com/docs/
● Ako radite aplikaciju za web i native, krenite od API-ja
– Phil Sturgeon, “Build APIs You Won’t Hate”

More Related Content

More from Stipe Predanic

[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 Stipe Predanic
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOSStipe Predanic
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljačaStipe Predanic
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 Stipe Predanic
 
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) Stipe Predanic
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora Stipe Predanic
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova Stipe Predanic
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. Stipe Predanic
 
Achieve the norm with Idiorm
Achieve the norm with IdiormAchieve the norm with Idiorm
Achieve the norm with IdiormStipe Predanic
 
Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.Stipe Predanic
 

More from Stipe Predanic (20)

[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051
 
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita)
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
 
Achieve the norm with Idiorm
Achieve the norm with IdiormAchieve the norm with Idiorm
Achieve the norm with Idiorm
 
Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.
 

[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.

  • 2. API ● Application programming interface ● Set naredbi, funkcija, protokola za stvaranje programa i aplikacija ● U web svijetu – pristupna to ka (end point) u ne jič č sustav – Kontrolirana – Definirana protokolima razmjene ● REST, SOAP, RPC
  • 3. API
  • 4. API
  • 5. Pristupi kako ostvariti API ● Rad s klasi nim pristupom stranicamač ● Normalni na in pristupa kao HTML stranicama, sč možda formatiranim ispisom ● XML-RPC (XML Remote Procedure call) ● Podaci su kodirani u XML, i postoje standardi kako se kodiraju podaci ● SOAP (Simple object Access Protocol) ● Nadgradnja nad XML-RPC, vrlo striktno definiran ● REST (Representational State Transfer) ● Nije protokol, nego pristup arhitekturi izrade API-ja
  • 6. REST ● Principi ● Stateless ● CRUD stil operacija (Create, Read, Update, Delete + estoč nekakav List) ● Model koristi – Imenice: URL, stil kao u direktorijima – Glagole: tip HTTP zahtjeva (GET, POST, PUT, DELETE) ● RESTful ● Potpuno prati sva pravila zadana za REST ● RESTless ● Djelomi no prati pravilač
  • 7. REST Glagoli HTTP REST CRUD GET READ – pročitaj podatke (pojedinačan, ili liste) POST CREATE – stvori novi podatak u sustavu PUT UPDATE (Replace) – Zamjena cijelog objekta s drugim PATCH UPDATE (Modify) – Zamjena dijela objekta s novim podatkom DELETE DELETE – obriši podatak Često postoje svađe oko svrhe POST / PUT / PATCH jer svi prenose podatke prema serveru. Mnogi RESTless API servisi imaju samo POST kao glagol za unos i update podataka.
  • 8. REST imenice ● URL formatiran u odgovaraju em oblikuć ● Mojsite.com/dogs <- lista svih pasa ● Mojsite.com/dogs/1 <- pas s ID-jem 1 ● Mojsite.com/dogs/1,2,5 <- psi s ID 1,2,5 ● Objekti na koje se odnose imenice bi trebali biti što specifi niji za željeno podru je (npr.č č Mojsite.com/animals <- sve životinje, ali mojsite.com/cats su ma ke)č ● Postoje sva e oko toga trebaju li imenice biti uđ jednini ili množini (op enito se preporu a množina)ć č
  • 9. zahtjevi i odgovori ● Kombinacija glagola i imenice definira što se treba napraviti ● GET mojsite.com/dogs -> daj listu pasa ● POST mojsite.com/dogs -> poslane podatke spremi pod pse ● DELETE mojsite.com/dogs/3 -> obriši tre eg psać ● Upiti i odgovori mogu i i u bilo kojem formatu (JSON,ć XML, nešto tre e)ć ● Ako API podržava više formata, dodajte negdje oznaku koji format želite (primiti ili poslati) ● Npr. GET mojsite.com/xml/dogs ili mojsite.com/dogs.xml
  • 10. zahtjevi i odgovori ● Odgovori od servera dolaze u obliku HTTP status kodova i podataka (ako ih ima) ● 200 – sve OK ● 201 – objekt stvoren (kad radite s POST-om) ● 202 – primljen zadatak ali e se sve odraditi asinkrono,ć negdje u pozadini ● 400 – loš zahtjev ● 401 – neautoriziran pristup ● 404 – nije prona eno ili nije dozvoljen pristupđ ● 410 – resurs (ili podaci o njemu) postoji ali je deaktiviran, obrisan ili tako ● 500 – API trenutno ima grešku
  • 11. Autentikacija ● Osim ako ne radite read only API, potrebna je autentikacija ● HTTP BA (Basic authorization) – Jednostavno, ugra eno u HTTP, ali krajnje nesigurno (npr. Lozinke seđ prenose plain-text) ● Hashiran password – Bolje od BA, ali programer mora na klijentskoj strani napisati kod koji eć hashirati password. ● Oauth – 1.0a i 2.0 (2.0 je trenutno standard) – SSL je obavezan (2.0), korisnik dobiva access token od autorizacijskog servera kojeg onda šalje u svakom zahtjevu ● Token može biti zaka en kao dio URL-a (lošije), ili u headeru (bolje)č ● NEMOJTE SE POUZDATI NA SUSTAV COOKIEA!
  • 12. Verzioniranje ● Što napraviti u situaciji u kojoj stvarate nove imenice koje e preuzeti neke funkcionalnostić postoje ih imenica?ć ● Nemojte naprasno prekinuti rad postoje eg sustava!ć ● Verzioniranje – Dodajte oznaku verzije u dokumentaciju i u svoj sustav – Može se dodati u URL (nije isto RESTful, ali se esto koristi)č č ● Mojsite.com/api/v1/dogs i mojsite.com/api/v2/dogs – Može se dodati polje u header pri zahtjevu ● Api-version: 2 – Može se zahtjevati odre eni tip podatka (postoji odgovaraju eđ ć polje u headeru pri zahtjevu) ● Accept: application/vnd.mojsiteapi.v2+json
  • 13. Zaklju akč ● API-ji su potrebni za komunikaciju izme u strojevađ ● Puno je sitnih detalja na koje treba paziti ● Dobra dokumentacija je pola API-ja – U ite od najboljihč – Twitter https://dev.twitter.com/rest/public – Facebook https://developers.facebook.com/docs/ ● Ako radite aplikaciju za web i native, krenite od API-ja – Phil Sturgeon, “Build APIs You Won’t Hate”