RESTful webszolgáltatások [601867]

RESTful webszolgáltatások
Web alkalmazások fejlesztése JAX-RS segítségével
Balla Tamás
Babeș-Bolyai Tudományegyetem
Matematika és Informatika kar
Informatika szak
Témavezető: dr. Ruff Laura
2016. június 29.
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 1 / 13

Tartalomjegyzék
1Alapok
2REST Jellemzői
3Alkalmazás készítéséhez használt technológiák
4JAX-RS Jersey
5Szolgáltatások elérése
6Alkalmazás bemutatása
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 2 / 13

Meghatározás
REST
Representational State Transfer
Alapítója
Roy Fielding – doktori disszertációjában, 2000-ben
Mi a REST?
Kliens – szerver architektúra
A kliens HTTP üzenetek segítségével kommunikál a szerverrel
Állapot nélküli kommunikációra tervezett
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 3 / 13

Meghatározás
REST
Representational State Transfer
Alapítója
Roy Fielding – doktori disszertációjában, 2000-ben
Mi a REST?
Kliens – szerver architektúra
A kliens HTTP üzenetek segítségével kommunikál a szerverrel
Állapot nélküli kommunikációra tervezett
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 3 / 13

Meghatározás
REST
Representational State Transfer
Alapítója
Roy Fielding – doktori disszertációjában, 2000-ben
Mi a REST?
Kliens – szerver architektúra
A kliens HTTP üzenetek segítségével kommunikál a szerverrel
Állapot nélküli kommunikációra tervezett
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 3 / 13

Meghatározás
REST
Representational State Transfer
Alapítója
Roy Fielding – doktori disszertációjában, 2000-ben
Mi a REST?
Kliens – szerver architektúra
A kliens HTTP üzenetek segítségével kommunikál a szerverrel
Állapot nélküli kommunikációra tervezett
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 3 / 13

Meghatározás
REST
Representational State Transfer
Alapítója
Roy Fielding – doktori disszertációjában, 2000-ben
Mi a REST?
Kliens – szerver architektúra
A kliens HTTP üzenetek segítségével kommunikál a szerverrel
Állapot nélküli kommunikációra tervezett
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 3 / 13

Meghatározás
REST
Representational State Transfer
Alapítója
Roy Fielding – doktori disszertációjában, 2000-ben
Mi a REST?
Kliens – szerver architektúra
A kliens HTTP üzenetek segítségével kommunikál a szerverrel
Állapot nélküli kommunikációra tervezett
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 3 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

REST
Tulajdonságok
Az adatok és műveletek erőforrásokként vannak kezelve
Erőforrásokat URI-k segítségével érhetünk el (URL, URN)
Önleíró üzenetek jellemzik
Az erőforrások manipulációja (HTTP analógia)
GET – erőforrás lekérése
POST – erőforrás aktuális állapotának a felülírása
PUT – erőforrás létrehozása
DELETE – erőforrás törlése
Erőforrások reprezentációja: XML, JSON, HTML, PDF, JPEG, MIME
Types (Média típusok), stb.
Erőforrással kapcsolatos meta adatok
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 4 / 13

Alkalmazás készítéséhez használt technológiák
Felhasznált technológiák
Maven alapú java projekt
Szerver oldal
Java EE – webalkalmazás
JAX-RS / Jersey
Alkalmazás szerver – Tomcat v7.0, Jetty
Adatbázis használat – MySQL
Hibernate ORM
Kliens oldal
HTML, CSS
AngularJS
MVC alapú javascript framework
kommunikáció a webszolgáltatásokkal, aszinkron hívásokkal
jQuery
PDFJS
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 5 / 13

Alkalmazás készítéséhez használt technológiák
Felhasznált technológiák
Maven alapú java projekt
Szerver oldal
Java EE – webalkalmazás
JAX-RS / Jersey
Alkalmazás szerver – Tomcat v7.0, Jetty
Adatbázis használat – MySQL
Hibernate ORM
Kliens oldal
HTML, CSS
AngularJS
MVC alapú javascript framework
kommunikáció a webszolgáltatásokkal, aszinkron hívásokkal
jQuery
PDFJS
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 5 / 13

Alkalmazás készítéséhez használt technológiák
Felhasznált technológiák
Maven alapú java projekt
Szerver oldal
Java EE – webalkalmazás
JAX-RS / Jersey
Alkalmazás szerver – Tomcat v7.0, Jetty
Adatbázis használat – MySQL
Hibernate ORM
Kliens oldal
HTML, CSS
AngularJS
MVC alapú javascript framework
kommunikáció a webszolgáltatásokkal, aszinkron hívásokkal
jQuery
PDFJS
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 5 / 13

Alkalmazás készítéséhez használt technológiák
Felhasznált technológiák
Maven alapú java projekt
Szerver oldal
Java EE – webalkalmazás
JAX-RS / Jersey
Alkalmazás szerver – Tomcat v7.0, Jetty
Adatbázis használat – MySQL
Hibernate ORM
Kliens oldal
HTML, CSS
AngularJS
MVC alapú javascript framework
kommunikáció a webszolgáltatásokkal, aszinkron hívásokkal
jQuery
PDFJS
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 5 / 13

Alkalmazás készítéséhez használt technológiák
Felhasznált technológiák
Maven alapú java projekt
Szerver oldal
Java EE – webalkalmazás
JAX-RS / Jersey
Alkalmazás szerver – Tomcat v7.0, Jetty
Adatbázis használat – MySQL
Hibernate ORM
Kliens oldal
HTML, CSS
AngularJS
MVC alapú javascript framework
kommunikáció a webszolgáltatásokkal, aszinkron hívásokkal
jQuery
PDFJS
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 5 / 13

Server
JAX-RS – Java API for RESTful Web Services
Jersey
JAX-RS (JSR 311 & JSR 339) specifikáció – referencia implementáció
Annotációkon alapszik
Milyen útvonalon lesz elérhető a szolgáltatás @Path
HTTP method @GET, @POST, @PUT, @DELETE, @HEAD
HTTP content-type annotációk @Consumes, @Produces
Paraméter annotációk @PathParam, @QueryParam, @FormParam
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 6 / 13

Server
JAX-RS – Java API for RESTful Web Services
Jersey
JAX-RS (JSR 311 & JSR 339) specifikáció – referencia implementáció
Annotációkon alapszik
Milyen útvonalon lesz elérhető a szolgáltatás @Path
HTTP method @GET, @POST, @PUT, @DELETE, @HEAD
HTTP content-type annotációk @Consumes, @Produces
Paraméter annotációk @PathParam, @QueryParam, @FormParam
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 6 / 13

Server
JAX-RS – Java API for RESTful Web Services
Jersey
JAX-RS (JSR 311 & JSR 339) specifikáció – referencia implementáció
Annotációkon alapszik
Milyen útvonalon lesz elérhető a szolgáltatás @Path
HTTP method @GET, @POST, @PUT, @DELETE, @HEAD
HTTP content-type annotációk @Consumes, @Produces
Paraméter annotációk @PathParam, @QueryParam, @FormParam
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 6 / 13

Jersey példa kód
@Path (" sheet ")
public class RestSheetMusic {
@GET
@Path ("/ SheetmusicBySheetID /{ id}")
@Produces ({ MediaType . APPLICATION_JSON })
public SheetMusic sheetm ( @PathParam ("id") Integer id) {
SMServiceImpl service = new SMServiceImpl ();
SheetMusic sm = service . getSheetmusicById (id);
return sm;
}
@PUT
@Consumes ({ MediaType . APPLICATION_JSON })
@Produces ({ MediaType . APPLICATION_JSON })
public SheetMusic addSheetMusic ( User user ) {
SMServiceImpl service = new SMServiceImpl ();
return service . insertSheetmusic ( user );
}
}
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 7 / 13

Szolgáltatások elérése
AngularJS aszinkron hívás
Parancssorból curlsegítségével
curl -v GET
http://localhost:8080/BscProject/rest/sheet/getAllInstrument -H
’Accept:application/json’
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 8 / 13

Szolgáltatások elérése
AngularJS aszinkron hívás
Parancssorból curlsegítségével
curl -v GET
http://localhost:8080/BscProject/rest/sheet/getAllInstrument -H
’Accept:application/json’
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 8 / 13

Szolgáltatások elérése
curl – Kérés Header – Válasz Header
> GET /BscProject/rest/sheet/getAllInstrument HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.46.0
> Accept: */*
> ’Accept:application/json’
>
< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< Content-Type: application/json
< Transfer-Encoding: chunked
< Date: Fri, 27 May 2016 15:22:35 GMT
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 9 / 13

Szolgáltatások elérése
Válasz
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 10 / 13

Alkalmazás bemutatása
Alkalmazás élő bemutatása
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 11 / 13

Jersey hivatalos oldala
AngularJS hivatalos oldala
Roy Fideling – Dissertation
JAX-RS hivatalos dokumentáció
Curl hivatalos dokumentáció
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 12 / 13

Köszönöm a figyelmet!
Balla Tamás (UBB) RESTful webszolgáltatások 2016. június 29. 13 / 13

Similar Posts