2. Mi a REST?
REpresentational State Transfer
Representational - a mögötte lévő
struktúrát igyekszik megjeleníteni
Leképezi az URL-ek struktúrájára, így
azonosítja az erőforrásokat
HTTP protokollra épülő, állapotmentes és
alkalmas elosztott rendszerek
megvalósítására
2
3. Tipikus REST API
http://example.com/books/
GET: könyvek listáját adja vissza
POST: új könyvet szúr a listába, az azonosítót a szerver adja
DELETE: törli a teljes listát
PUT: lecseréli a teljes listát
http://example.com/books/xyz
GET: egy konkrét könyvet ad vissza, melynek xyz az azonosítója
POST: az xyz könyvet listának tekinti, és alárendel egy új elemet (pl.
fejezetet)
DELETE: törli az xyz könyvet
PUT: módosítja az xyz könyvet, vagy újat hoz létre xyz azonosítóval
3
4. RESTful Web Service
JAX-RS egy ilyen megvalósítás
Többféle reprezentáció (JSON, XML, JPEG, …
lásd @Produces és MediaType osztály
Stateless EJB, és CDI bean lehet JAX-RS resource is és kaphat @Path annotációt
Amit lehet végezni az egyes erőforrásokkal public metódusok segítségével:
PUT - létrehozás
A teljes lista létrehozása/lecserélése
Olvasás
@GET List<Message> getMessages()
Update
@POST Response addMessage(String msg)
Törlés
@DELETE @Path(“{msgNum}")
void deleteMessage(@PathParam("msgNum") int msgNum)
4
5. @Path
@Path("users/{userId:d+}")
@GET
public Response getUser(@PathParam("userId") int id){
return Response.status(200).entity(userDAO.find(id));
}
A végső útvonal hierarchikusan épül fel, az alábbi módon:
applicationPath / classPath / methodPath
Lásd: JaxRsApplication / MessageBoardRootResource
és MessageBoardResourceBean / @GET, @POST és
@DELETE -el jelölt metódusok
{ } -el adjuk meg azokat a részeket, amiket a @PathParam-
okban fugunk használni
Regex is használható, lásd: d+
6. JAX-RS Annotációk
@Path
URI részlet ahol elérhető a resource
@PUT, @GET, @POST, @DELETE, (@HEAD)
create, read, update, delete, (metaadat lekérés)
@PathParam
az URI részét képező paraméterek, pl: /users/123
@QueryParam
a URI query paraméter, pl: /users?id=123
@Produces, @Consumes
A kimenő/bejövő tartalom típusa (MIME Type, pl: JSON, XML,
stb…). Osztály és metódus szinten is megadható
6