Professional Documents
Culture Documents
Samoopisujuć je.
XML vs HTML
- mnogi sistemi imaju podatke koji nisu u kompatibilnim formatima što otežava razmene
podataka - podaci moraju da se konvertuju i to dovodi to gubitaka podataka.
- XML olakšava i proširenje i unapredjenje novih OS, app, pretraživaca bez gubitka
podataka
Svi elementi moraju imati zatvarajući tag, moraju biti ugnježdeni pravilno, imaju atribute
koji imaju svoje vrednosti, vrednosti atirbuta moraju se navoditi pod navodnicima
(jednostrukim ili dvostrukim).
Vrednosti atributa moraju uvek biti pod navodnicima. Mogu biti korišćeni i jednostruki i
dvostruki navodnici.
Vrste elemenata
JSON Objekat
connectionless - Klijent kreira zahtev i pošalje ga serveru i čeka na odgovor. Server obradi
zahtev i pošalje odgovor klijentu nakon čega se prekida veza. Klijent i server znaju za
medjusobno postojanje samo dok traje zahtjev i odgovor. Za slanje novih zahtjeva
potrebno je otvoriti novu konekciju.
media independent - bilo koji tip podatka može biti poslat preko HTTP-a sve dok i
klijent i server znaju kako obraditi te podatke. Potrebno je da i klijent i server navedu
tip sadržaja koristeći odgovarajući MIMEtype.
Klijent - salju zahtev serveru u formi metode, URI, verzije protokola, uz MIME poruku
koja sadrži modidikatore zahteva, klijent informacije i moguće telo preko TCP/IP veze.
Request - šalje ga klijent serveru u sledećem formatu: request-line, nula ili vise polja
zaglavlja praćenih CRLF(carriage return and a line feed), prazna linija koja ukazuje na kraj
zaglavlja, opciono telo
Request Line - Request Method, Request-URI, Request Header Fields
Request Method - označava metodu koju treba izvršiti nad resursima identifikovanih
putem URI, navodi se velikom slovima - GET, POST, HEAD, PUT, DELTE, OPTIONS,
CONNECT
Response - šalje ga server klijentu u sledećem formatu: Request-line, nula ili više polja
zaglavlja praćenih CRLF(carriage return and a line feed), prazna linija koja ukazuje
na kraj zaglavlja, opciono tijelo
Message Status Line - HTTP Version, Status Code, Response Header Fields
Status Code - trociferni broj gde prva cifra ukazuje na klasu odgovora, postoji 5
vrednosti za prvu cifru:
1xx - informacije,
2xx - uspeh,
3xx - redirekcija,
4xx - klijentska greška,
5xx - serverska greška
Veb servisi - veb aplikacije zasnovane na otvorenom standardu (XML, SOAP, HTTP,
itd.) koje komuniciraju sa drugim veb aplikacijama u svrhu razmene podataka.
- API interface definition file – definiše šta možemo pozvati, šta možemo poslati
prilikom poziva i šta dobijamo kao odgovor.
- Web servis – to je ili aktuelna API implementacija kojoj možemo uputiti pozive
ili interfejs aktuelne API implementacije.
- API proxy – aplikacija koja kontroliše pristup veb servisu, restrikcioniše pristup
i koristi se kroz korišćenje API gateway-a.
WSDL (Web Services Description Language) - Fajl zasnovan na XML-u koji u osnovi
GOVORI KLIJENTSKOJ APLIKACIJI ŠTA VEB SERVIS RADI.
WSDL fajl sadrži lokaciju veb usluge i metode koje veb servis omogućuje.
WSDL Elementi
1. Oznaka <types> se koristi za definisanje svih složenih tipova podataka, koji će
se koristiti u poruci koju razmenjuju klijentska aplikacija i veb servis. Ovo je važan
aspekt klijentske aplikacije, jer ako veb servis radi sa složenim tipom podataka,
tada bi klijentska aplikacija trebalo da zna kako da obrađuje složeni tip
podataka. Tipovi podataka kao što su float, brojevi i nizovi su svi jednostavni tipovi
podataka, ali mogu postojati strukturirani tipovi podataka koje veb servis može da
obrađuje.
2. Oznaka <messages> koristi se za definisanje poruke koja se razmenjuje između
klijentske aplikacije i veb servera. OVE PORUKE ĆE OBJASNITI ULAZNE I
IZLAZNE OPERACIJE KOJE VEB USLUGA MOŽE DA IZVRŠI.
3. Oznaka <portType> se koristi ZA ENKAPSULACIJU SVAKE ULAZNE I IZLAZNE
PORUKE U JEDNU LOGIČKU OPERACIJU.
4. Oznaka <binding> se koristi za povezivanje operacije sa određenim tipom
porta. Kada klijentska aplikacija pozove odgovarajući tip porta, tada će moći da
pristupi operacijama koje su vezane za njega. Tipovi porta su poput interfejsa.
Dakle, ako klijentska aplikacija treba da koristi veb servis, ona mora da koristi
obavezujuće informacije kako bi osigurala da možeda se poveže sa interfejsom koji
pruža taj veb servis.
5. Oznaka <service> je ime veb servisa. Inicijalno, kada klijentska aplikacija pozove
veb servis, to će učiniti pozivanjem imena.
- Jedna je za ulaz (input) veb servisa. Input se koristi za opisivanje parametara koje
veb servis prihvata. Ovo je važan aspekt klijentskoj aplikaciji kako bi znala
vrednosti koje se šalju kao parametri veb servisa.
- Druga vrsta poruke je izlazna poruka (output) koja govori koje rezultate vraća veb
servis.
POST – kada npr. želimo da dodamo novog customer-a u customers resurs koristi se ova
metoda. Ona služi za kreiranje novog resursa;
DELETE – kada želimo da obrišemo korisnika iz resursa customers, koristim ovu metodu,
ako ne navedemo tačno kog korisnika želimo da obrišemo, svi korisnici će biti obrisani. Ova
metoda briše resurs.
PUT – kada želimo da zamenimo korisnike i dodamo novi skup korisnika. Ako resurs
customers nije ni postojao pre toga, kreiraće se novi resurs customers.
PATCH – pomoću ove metode možemo parcijalno update-ovati samo deo resursa
customers, dakle nećemo zameniti sve korisnike(kao kod PUT) nego samo neke.
Dizajniranje API-ja - Postoje određeni benefiti dizajniranja API-ja pre njegove izgradnje.
Taj pristup se zapravo naziva spec driven development. Kod ovog pristupa development
proces teče u 2 faze:
1. faza – Design Phase: U ovoj fazi se kreira specifikacija API-ja;
2. faza – Development Phase: Razvoj koda koji odgovara specifikaciji. Standardni
jezik za opis API-ja je RAML
RAML je jednostavan, struktuiran i sažet način za opis RESTful API-ja. U okviru RAML-a
definisani su resursi, HTTP metode koje se mogu koristiti za svaki resurs, request
parametri svake metode i njihovi tipovi podataka, tipovi odgovora i primeri odgovora,
šeme itd. On se, između ostalog, koristi za automatsko generisanje API dokumentacije.
RAML je baziran na široko prihvaćenim standardima kao što su YAML i JSON. Koristi
ljudima razumljiv format podataka gde je struktura podataka specificirana putem
nazubljivanja koda. Pri tome, ne postoje dodatni karakteri koji se koriste za označavanje. U
RAML-u nazubljivanjem se postiže specifikacija toga šta svaka linija koda reprezentuje i
primenjuje. Na osnovu nazubljenog koda specifikacija API-ja u RAML-u je veoma čitljiva.
Resursi su objekti identifikovani preko URL-a veb servisa nad kojima želimo da
izvršavamo HTTP metode korišćenjem zahteva. Svi resursi počinju oznakom slash. Svaka
metoda i parametar koji su ugnježdeni unutar resursa pripadaju tom resursu i mogu se
koristiti nad tim resursom.