Commit d7f5ffd7 by Patryk Czarnik

Wersja multiformatowa XML + JSON

parent cbfe08b2
...@@ -32,7 +32,7 @@ import sklep.model.Product; ...@@ -32,7 +32,7 @@ import sklep.model.Product;
public class RProducts { public class RProducts {
@GET @GET
@Produces("application/json") @Produces({"application/json", "application/xml", "text/plain"})
public List<Product> readAll() throws DBException { public List<Product> readAll() throws DBException {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
...@@ -41,7 +41,7 @@ public class RProducts { ...@@ -41,7 +41,7 @@ public class RProducts {
} }
@GET @GET
@Produces("application/json") @Produces({"application/json", "application/xml", "text/plain"})
@Path("/{id}") @Path("/{id}")
public Product readOne(@PathParam("id") int productId) throws DBException, RecordNotFound { public Product readOne(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
...@@ -53,7 +53,7 @@ public class RProducts { ...@@ -53,7 +53,7 @@ public class RProducts {
// Dostęp do pojedynczego pola w rekordzie - nie ma obowiązku implementowania takich metod // Dostęp do pojedynczego pola w rekordzie - nie ma obowiązku implementowania takich metod
// i nie robi robi się tego zbyt często, ale pokazujemy, że można (gdyby klient często potrzebował dostępu do wybranego szczegółu) // i nie robi robi się tego zbyt często, ale pokazujemy, że można (gdyby klient często potrzebował dostępu do wybranego szczegółu)
@GET @GET
@Produces("application/json") @Produces({"application/json", "text/plain"})
@Path("/{id}/price") @Path("/{id}/price")
public BigDecimal getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound { public BigDecimal getPrice(@PathParam("id") int productId) throws DBException, RecordNotFound {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
...@@ -68,7 +68,7 @@ public class RProducts { ...@@ -68,7 +68,7 @@ public class RProducts {
// W JAX-RS metoda może posiadać tylko jeden parametr bez adnotacji i to właśnie przez ten parametr przekazywana jest treść zapytania // W JAX-RS metoda może posiadać tylko jeden parametr bez adnotacji i to właśnie przez ten parametr przekazywana jest treść zapytania
// (te dane, które przysłał klient). Format tych danych opisuje adnotacja @Consumes // (te dane, które przysłał klient). Format tych danych opisuje adnotacja @Consumes
@PUT @PUT
@Consumes("application/json") @Consumes({"application/json", "text/plain"})
@Path("/{id}/price") @Path("/{id}/price")
public void putPrice(@PathParam("id") int productId, public void putPrice(@PathParam("id") int productId,
BigDecimal newPrice) throws DBException, RecordNotFound { BigDecimal newPrice) throws DBException, RecordNotFound {
...@@ -84,11 +84,11 @@ public class RProducts { ...@@ -84,11 +84,11 @@ public class RProducts {
// W praktyce REST metoda POST jest używana do dodawania nowych rekordów do katalogu. // W praktyce REST metoda POST jest używana do dodawania nowych rekordów do katalogu.
// Może być także używana w innych celach - gdy klient ma "przysłać dane na serwer", a serwer coś z tym zrobi (podobnie jak to było w SOAP). @POST // Może być także używana w innych celach - gdy klient ma "przysłać dane na serwer", a serwer coś z tym zrobi (podobnie jak to było w SOAP). @POST
// POST w tym miejscu jest lepszy niż PUT, bo zapisując nowy rekord, nie wiemy z góry jakie będzie będzie jego ID, // POST w tym miejscu jest lepszy niż PUT, bo zapisując nowy rekord, nie wiemy z góry jakie będzie będzie jego ID,
// czyli nie wiemey, pod adresem zapisze się nowy produkt. // czyli nie wiemy, pod adresem zapisze się nowy produkt.
// POST potrafi "dodać rekord do katalogu". // POST potrafi "dodać rekord do katalogu".
@POST @POST
@Consumes("application/json") @Consumes({"application/json", "application/xml"})
@Produces("application/json") @Produces({"application/json", "application/xml"})
public Product zapiszProdukt(Product product) throws DBException { public Product zapiszProdukt(Product product) throws DBException {
try(DBConnection db = DBConnection.open()) { try(DBConnection db = DBConnection.open()) {
ProductDAO productDAO = db.productDAO(); ProductDAO productDAO = db.productDAO();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment