You are on page 1of 9

XML (eXtensible Markup Language) - ZA SKLADISTENJE I TRANSPORT PODATAKA.

Samoopisujuć je.

• eXtensible Markup Language

• dizajniran za skladištenje i transport podataka

• dizajniran je da bude samoopisujući

• on je markup jezik sličan kao HTML

XML ne radi ništa

• Ima informacije o pošiljaocu, primaocu, ima zaglavlje i telo poruke.

XML vs HTML

- XML je za prenos podataka, gde je fokus na tome šta su podaci. HTML je


dizajniran da prikazuje podatke, gde je fokus na tome kako podaci izgeldaju
- HTML TAGOVI SU PREDEFINISANI, XML NISU
- XML - SKLADISTENJE ILI TRANSPORT PODATAKA
- HTML - FORMAT I PREZENTACIJU PODATAKA

Sta olakšava XML?

- olakšava dijeljenje, transport, dostupnost podataka, promene na platformama

- 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 skladisti podatke u teksutalnom fromatu sto REŠAVA PROBLEM RAZMENE


PODATAKA IZMEDJU NEKOMPATIBILNIH SISTEMA.

- XML olakšava i proširenje i unapredjenje novih OS, app, pretraživaca bez gubitka
podataka

- XML razdrvaja podatke od reprezentacije

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).

Elementje sve od otvarajuceg do zatvarajućeg taga: text, atribut, element


Pravila:
• Svi XML tagovi moraju biti zatvarajući tagovi
• XML tagovi su case sensitive. Tag <Pismo> nije isti kao tag <pismo>.
• U XML, svi elementi moraju biti dobro uklješteni jedni sa drugima
o Npr. <b><i> sfknd <i><b>
• XML elementi mogu imati atribude u name/values paru kao i u HTML-u
• U XML, atribudi vrednosti moraju biti pod navodnicima:
o <note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>
Elementi

 XML element je sve ono od početka taga do kraja zatvarajućeg taga


 Element može sadržati : tekst, atribute, druge elemente ili mix svega
 Prazni elementi mogu sadržati atribute
 Nazivi elemenata su case-sensitive
 Naziv mora početi sa slovom ili _
 Nazivi ne mogu početi sa slovima XML-a
 Nazivi elemenata mogu sadržati slova, cifre, crtice , donje crtice i periods?
 Nazivi ne mogu sadržati razmake
 Bilo koji naziv može biti dodat, nema rezervisanih reči osim XML

Pravila vezana za atribute

 Vrednosti atributa moraju uvek biti pod navodnicima. Mogu biti korišćeni i jednostruki i
dvostruki navodnici.

- atributi ne mogu sadržati više vrednosti, elemetni mogu


- atributi ne mogu sadržati strukturu stabla, elementi mogu
- atributi nisu lako proširivi

Xpath - sintaksa za definisanje delova XML dokumenta, koristi putanju za navigiranje u


XML dokumentu i odabir čvorova, sadrži biblioteku sa standardnim funkcijama. Predstavlja
element u XSLT i u Xquery
XML schema – DEFINIŠE STRUKTURU XML DOKUMENTA

Vrste elemenata

- Kompleksnog tipa - element sadrži druge elemente


- Jednostavnog tipa - element ne sadrži druge elemente

JSON (JavaScript Object Notation) - samoopisujuć i lak za razumevanje, nezavisan

JSON je teksutalnog formata i jednostavan je za slanje podataka na server i sa


servera, može ga koristiti bilo koji programski jezik. Koristi se ZA SERIJALIZACIJU I
PRENOS STRUKTURIRANIH PODATAKA PREKO MREŽNE VEZE, prvenstveno za prenos
podataka izmedju servera i web aplikacija, web servisi i API-iji koriste JSON format za
pruzanje podataka. Korišćen je u mnogim modernim programskim jezicima.

JSON Syntax pravila

-Podaci suu u name/value paru


-Podaci su razdvojeni zarezom
-U vitičastim zagradama su objekti
-U uglastim zagradama su nizovi
-Name/values par: “name“: “John“
JSON niz
- Određena kolekcija vrednosti
- U uglastim zagradama se piše
- Podaci su razdvojeni zarezom
- Indeksiranje niza može početi od 0 ili 1
-

JSON Objekat

- nesortitan set name/value parova


- svako ime je praćeno ':' i key/value parovi su razdvojeni zapetom
- ključevi moraju biti različiti stringovi
- koriste se kad su ključevi proizvoljni nizovi

JSON.parse() - podatke primljene sa servera koji su string pretvara u JS objekte

JSON.stringify() - podatke koji se šalju na server koji su JS objekti pretvara u string


JSON vs XML

- sličnosti: samoopisujući, hijerarhijski, mogu se parsirati i koriste ih razni


programski jezici, mogu se dohvatiti pomocu XMLHttpRequest
- razlike: JSON ne koristi tagove, kraći je, lakše se čita i piše, može koristiti nizove i
najveća razlika je XML mora biti parsisan sa XML parserom, a JSON se parsira
standardnom JS funkcijom

HTTP (Hypertext Transfer Protocol)

- TCP/IP baziran komunikacioni protokol, koristi se za prenos podataka na


WWW
- default port TCP 80, omogućava standardizovsani način za komunikaciju izmedju
računara
- odredjuje kako klijentski zahtevani podaci treba da se strukturišu i pošalju na
server i kako serveri treba da reguju na zahteve

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.

Stateless - Klijent i server su svesni medjusobnog postojanja dok traje trenutni


zahtev nakon toga zaboravljaju jedan na drugog, zbog toga ni klijent ni browser ne
mogu zadržati informacije izmedju različitih zahteva preko web stranica.

Arhitektura - HTTP PROTOKOL JE REQUEST/RESPONSE PROTOKOL ZASNOVAN NA


KLIJENT/SERVER ARHITEKTURI gde web browsers, roboti i search engines se ponasaju
kao HTTP klijenti, a Web server kao server

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.

Server - odgovara statusnom linijom uz verziju protokola i kodom koji označava da li


je uspešno izvršeno ili je greška i MIME poruku koja sadrži podatke o serveru, meta
podatke o entitetu, moguće telo

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

Request – URI - jedinstevi identifikator resursa i identifikuje resurs na koji se


primjenjuje zahtev

Request Header Fields - omogućava korisniku da prosledi dodatne info o zahtevu i


samom klijentu, ova polja predstavljaju mofikatore zahteva npr. Accept-Charset, Accept-
Encoding, Accept-Language, Authorization, Expect, From, Host,...

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

Response Header Fields - omogućavaju serveru da prosledi dodatne informacije o


odgovoru koji se ne može staviti u statusnu liniju. Daju dodatne informacije o serveru
i dalje pristupu resursu identifikovanim putem Request-URI. npr. Accept-Ranges, Age,
ETag, Location, Proxy-Authenticate,...

Veb servisi - veb aplikacije zasnovane na otvorenom standardu (XML, SOAP, HTTP,
itd.) koje komuniciraju sa drugim veb aplikacijama u svrhu razmene podataka.

Kompletan veb servis je svaki servis koji:

- Je dostupan je putem Interneta ili privatnih (intranet) mreža


- Koristi standardizovani XML sistem za razmenu poruka
- Nije vezan ni za jedan operativni sistem ili programski jezik
- Je samoopisiv – koristi XML gramatiku
- Se može se otkriti jednostavnim mehanizmom pronalaženja (može mu se pristupiti)
Komponente veb servisa –

- SOAP - protokol za pristup objektima (Simple Object Access Protocol)


- UDDI - univerzalni opis, otkrivanje i integracija veb servisa (Universal
Description, Discovery and Integration)
- WSDL - jezik za opis veb servisa (Web Services Description Language)

VEB SERVIS JE METODA KOMUNIKACIJE KOJA OMOGUĆAVA DA DVA SOFTVERSKA


SISTEMA RAZMENJUJU PODATKE PUTEM INTERNETA.

API - Obezbeđuje informacije o tome KAKO KOMUNICIRATI SA SOFTVERSKOM


KOMPONENTOM definišući:

- operacije (šta možemo pozvati)


- inpute (šta poslati prilikom poziva)
- outpute (šta očekujemo da dobijemo nazad kao odgovor od poziva)
- tipove podataka

API DEFINIŠE FUNKCIONALNOSTI NEZAVISNE OD IMPLEMENTACIJE u smislu da u


okviru API-ja možemo promeniti funkcionalnosti - ono što se dešava iza scene, ne
menjajući implementaciju odnosno način na koji ljudi pozivaju te funkcionalnosti.

Pojam API može da se koristi za:

- 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.

Delovi veb servisa

1. Web Service API:


- opisuje KAKO KOMUNICIRAMO SA DRUGIM VEB SERVISIMA,
- može, a i ne mora (trebalo bi) da bude eksplicitno definisan u fajlu,
- može biti bilo koji tekst bilo kog tipa fajla, ali bi trebalo da koristi neke
standarde API description jezika.
2. Web service interface koji implementira API
- kod koji obezbeđuje strukturu aplikaciji. Struktura omogućava aplikaciji da
koristi API,
- ovaj kod može da se kombinuje sa aktuelnim implementacionim kodom.
3. Sama implementacija veb servisa – kod i aplikacija
Dva osnovna tipa veb servisa

1. SOAP - tradicionalni, kompleksniji od RESTful servisa. pravila za komunikaciju se


definišu putem WSDL-a koji je zasnovan na XML-u

2. REST - moderniji, jednostavniji bazirani na REST komunikaciji.

SOAP je PROTOKOL ZASNOVAN NA XML-U ZA PRISTUP VEB SERVISIMA PREKO


HTTP-A. SOAP je protokol koji se KORISTI ZA RAZMENU PODATAKA IZMEĐU
APLIKACIJA. Specifikacija SOAP definiše nešto što se naziva „SOAP poruka“, a to je suština
komunikacija veb servisa i klijentske aplikacije

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.

Struktura WSDL-a sadrži: definiciju, targetnamespace, tipove podataka, poruke, prottype,


binding i sam servis.

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.

Svaki veb servis će uvek imati 2 vrste poruka:

- 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.

REST (Representational State Transfer) - Koristi postojeći HTTP protokol da omogući


različitim sistemima da komuniciraju. HTTP request metoda ukazuje na to koja
operacija će se izvoditi nad objektom identifikovanim preko URL-a.

GET – koristimo kada želimo da preuzmemo trenutno stanje resursa(customers) u


određenoj reprezentaciji (JSON, XML);

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.

You might also like