isvu rest api u 2014+ - unizg.hr...• kako vas potaknuti na komunikaciju putem [email protected] mailing...

22
22. siječnja 2014. ISVU REST API u 2014+ Denis Kranjčec, Srce [email protected]

Upload: others

Post on 28-Dec-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

ISVU REST API u 2014+

Denis Kranjčec, [email protected]

Page 2: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Richardson Maturity Model

• Level 0– One URI– SOAP, XML RPC, POX

• Level 1– Many URIs– One HTTP method

• Level 2– Many URIs– Multiple HTTP methods

• Level 3– Level2 + Hypermedia (Resources decribe their own capabilities and

interconnections)

ISVU REST API

Page 3: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Richardson Maturity Model

• Level 0– One URI– SOAP, XML RPC, POX

• Level 1– Many URIs– One HTTP method

• Level 2– Many URIs– Multiple HTTP methods

• Level 3– Level2 + Hypermedia (Resources decribe their own capabilities and

interconnections)

ISVU REST API

„A truly RESTful API looks like hypertext.” – RoyFielding

Page 4: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS (1)

• HATEOAS (Hypermedia as the Engine of Application State)– The principle is that a client interacts with a network

application entirely through hypermedia provided dynamically by application servers. A REST client needs no prior knowledge about how to interact with any particular application or server beyond a generic understanding of hypermedia.

Page 5: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS (2)

• A REST client enters a REST application through a simple fixed URL.

• All future actions the client may take are discovered within resource representations returned from the server.

• The media types used for these representations, and the link relations they may contain, are standardized.

• The client transitions through application states by selecting from the links within a representation or by manipulating the representation in other ways afforded by its media type. In this way, RESTful interaction is driven by hypermedia, rather than out-of-band information.

http://en.wikipedia.org/wiki/HATEOAS

way, RESTful interaction is driven by hypermedia, rather than

Page 6: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS (3)

• „Hypermedia Types are MIME media types that contain native hyper-linking semantics that induce application flow. For example, HTML is a hypermedia type; XML is not.” - Mike Amundsen

Page 7: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS (3)

• „Hypermedia Types are MIME media types that contain native hyper-linking semantics that induce application flow. For example, HTML is a hypermedia type; XML is not.” - Mike Amundsen

• Koji hypermedia type koristiti?– Nema standarda za REST API-je– HAL (Hypertext Application Language)– Collection+JSON– ...

Page 8: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HAL (1)

• HAL (HypertextApplication Language) - Alean hypermedia typehttp://stateless.co/hal_specification.html

– HAL is a format you can use in your API that gives you a simple way of linking. It has two variants, one in JSON (application/hal+json)and one in XML(application/hal+xml).

Page 9: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HAL (2)<resource href="/orders">

<link rel="next" href="/orders?page=2" />

<link rel="find" href="/orders{?id}" templated="true" />

<link rel="admin" href="/admins/2" title="Fred" />

<link rel="admin" href="/admins/5" title="Kate" />

<currentlyProcessing>14</currentlyProcessing>

<shippedToday>20</shippedToday>

<resource rel="order" href="/orders/123">

<link rel="customer" href="/customers/7809" />

<link rel="basket" href="/baskets/98712„ />

<total>30.00</total>

<currency>USD</currency>

<status>shipped</status>

</resource>

<resource rel="order" href="/orders/124">

...

</resource>

</resource>

Page 10: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HAL (2)<resource href="/orders">

<link rel="next" href="/orders?page=2" />

<link rel="find" href="/orders{?id}" templated="true" />

<link rel="admin" href="/admins/2" title="Fred" />

<link rel="admin" href="/admins/5" title="Kate" />

<currentlyProcessing>14</currentlyProcessing>

<shippedToday>20</shippedToday>

<resource rel="order" href="/orders/123">

<link rel="customer" href="/customers/7809" />

<link rel="basket" href="/baskets/98712„ />

<total>30.00</total>

<currency>USD</currency>

<status>shipped</status>

</resource>

<resource rel="order" href="/orders/124">

...

</resource>

</resource>

Page 11: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HAL (2)<resource href="/orders">

<link rel="next" href="/orders?page=2" />

<link rel="find" href="/orders{?id}" templated="true" />

<link rel="admin" href="/admins/2" title="Fred" />

<link rel="admin" href="/admins/5" title="Kate" />

<currentlyProcessing>14</currentlyProcessing>

<shippedToday>20</shippedToday>

<resource rel="order" href="/orders/123">

<link rel="customer" href="/customers/7809" />

<link rel="basket" href="/baskets/98712„ />

<total>30.00</total>

<currency>USD</currency>

<status>shipped</status>

</resource>

<resource rel="order" href="/orders/124">

...

</resource>

</resource>

Link Relations (IANA)

http://www.iana.org/assignments/link-

relations/link-relations.xml

Page 12: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HAL (2)<resource href="/orders">

<link rel="next" href="/orders?page=2" />

<link rel="find" href="/orders{?id}" templated="true" />

<link rel="admin" href="/admins/2" title="Fred" />

<link rel="admin" href="/admins/5" title="Kate" />

<currentlyProcessing>14</currentlyProcessing>

<shippedToday>20</shippedToday>

<resource rel="order" href="/orders/123">

<link rel="customer" href="/customers/7809" />

<link rel="basket" href="/baskets/98712„ />

<total>30.00</total>

<currency>USD</currency>

<status>shipped</status>

</resource>

<resource rel="order" href="/orders/124">

...

</resource>

</resource>

URI Template (RFC6570)

http://tools.ietf.org/html/rfc6570

Page 13: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS & HAL @ ISVU REST API (1)• Zahtjev:GET

https://webtest.testisvu.srce.hr/api/

Accept: application/hal+json

• Odgovor:{

"_links":{

"nastavniprogram":{

"href":"https://webtest.testisvu.srce.hr/api/vu/120/nastavniprogram"

},

"nastavniplan":{

"href":"https://webtest.testisvu.srce.hr/api/vu/120/nastavniplan"

},

"profile":{

"href":"https://webtest.testisvu.srce.hr/api/dokumentacija/hal/index.html"

}

}

}

Page 14: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS & HAL @ ISVU REST API (2)• Zahtjev: https://webtest.testisvu.srce.hr/api/vu/120/nastavniplan/

rok/predmet/15073/akademskagodina/2010

• Odgovor:

{

"_embedded":[

{

"datumRoka":"2011-07-06 00:00",

"vrstaRoka":{

"oznaka":"R",

"opis":"redovni rok"

},

"pismeni":"DA",

"vrijemePrijaveDo":"2011-07-04 23:59",

"vrijemeOdjaveDo":"2011-07-05 12:00",

"zakljucan":"DA",

"objavljeniRezultatiPismenog":"DA",

"_links":{

"ispit.usmeni.rezultati":{

"href":"https://.../ispit/usmeni/predmet/15073/datum/2011/7/6"

},

"ispit.prijave":{

"href":"https://.../ispit/prijava/predmet/15073/datum/2011/7/6"

}

}

Page 15: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

HATEOAS & HAL @ ISVU REST API (3)https://www.isvu.hr/api/dokumentacija/hal/index.html

Page 16: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Nove (moguće) funkcionalnosti

• Cache-iranje– Trenutno se cache-ira mali skup podataka– Analize zahtjeva pokazuju da se nema što cache-irati – rijetko se

ponavlja zahtjev u istom danu• Limitiranje broja zahtjeva

– Trenutno nema limita– Smanjiti/eliminirati mogućnost da jedan korisnik onemogući

korištenje sustava ostalim korisnicima

• Implementirati opciju filtriranja zahtjeva po IP adresi za pojedinog klijenta

• Resursi „što se sve izmijenilo/dogodilo u proteklom periodu?”

• ISVU REST API ima jednu instancu – po potrebi ćemo kreirati

klaster

Page 18: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

ISVU REST API u 2014+

Denis Kranjčec, [email protected]

Page 19: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Razgovor

Page 20: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Razgovor

• Na koje probleme nailazite u korištenju?

• Što mislite o dokumentaciji?

• Zašto ne koristite modul za analizu rada i korištenja?

https://www.isvu.hr/api/analitika/

• Kako Vam olakšati međusobnu suradnju?

• Kako Vas potaknuti na komunikaciju putem [email protected] mailing liste?• Koji su Vam daljnji planovi?

• Što bi se trebalo promijeniti kod sljedećeg ovakvog okupljanja?

• Koliko često bi trebali organizirati ovakvo događanje?

• Molim da nam pošaljete prezentacije na [email protected] radi objave

Page 21: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Program• 12:00 - 12:20 „Uvodna riječ - Zašto REST API?” - Denis Kranjčec, Srce

• 12:20 - 12:40 „Kako je implementiran ISVU REST API?” - Estera Prendivoj, Srce• 12:40 - 13:10 „Tehničko veleučilište u Zagrebu” -

Ivica Dodig, Ivan Cesar i Davor Cafuta• 13:10 - 13:25 „ISVU REST API na FOI, stanje i planovi” -

Darko Grabar i Željko Šmaguc, FOI

• 13:25 - 13:45 pauza

• 13:45 - 14:00 „NEO-MRKVE” - doc. dr. sc. Alfonzo Baumgartner, dipl. ing, ETFOS• 14:00 - 14:15 „Primjena digitalne olovke u ISVU sustavu” -

doc. dr. sc. Irena Galić, prof., ETFOS

• 14:15 - 14:30 „ISVU API kao potpora sustavu za e-učenje Medicinskog fakulteta

Sveučilišta u Zagrebu” - Andrej Vitez, MEF• 14:30 - 14:45 „Povezivanje sustava Merlin s ISVU-om” - Zvonko Martinović, Srce

• 14:45 - 15:05 pauza

• 15:05 - 15:35 „Quilt CMS is so 'API!” -Svebor Prstačić, Siniša Tomić i Vlatka Paunović, FER

• 15:35 - 15:55 „ISVU REST API u 2014+” - Denis Kranjčec, Srce

• 15:55 - 16:15 Razgovor

Page 22: ISVU REST API u 2014+ - unizg.hr...• Kako Vas potaknuti na komunikaciju putem api@isvu.hr mailing liste? • Koji su Vam daljnji planovi? • Što bi se trebalo promijeniti kod sljedećeg

22. siječnja 2014.

Okupljanje korisnika ISVU-

REST API u ISVU