#java #rest
Привет всем! Подскажите как организовать счетчик, который бы на стороне клиента показывал сколько раз клиент отправлял запрос( у меня клиент - просто main - выводит в консоль) Есть совсем простое приложение, которые развернуто на glassfish локально. Вот касс с клиентской частью: package com.mkyong.client; import com.mkyong.rest.JSONService; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; public class JerseyClientPost { public static void main(String[] args) { try { Client client = Client.create(); WebResource webResource = client .resource("http://localhost:8080/RESTfulExample3/rest/json/metallica/post"); String input = "{\"singer\":\"Metallica\",\"title\":\"Fade To Black\"}"; ClientResponse response = webResource.type("application/json") .post(ClientResponse.class, input); if (response.getStatus() != 201) { throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); } System.out.println("Output from Server .... \n"); String output = response.getEntity(String.class); System.out.println(output); } catch (Exception e) { e.printStackTrace(); } } } А вот с серверной: package com.mkyong.rest; import com.mkyong.CounterOfCalls; import com.mkyong.Track; import com.sun.jersey.spi.inject.Inject; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/json/metallica") public class JSONService { @GET @Path("/get") @Produces(MediaType.APPLICATION_JSON) public Track getTrackInJSON() { Track track = new Track(); track.setTitle("Enter Sandman"); track.setSinger("Metallica"); return track; } @POST @Path("/post") @Consumes(MediaType.APPLICATION_JSON) public Response createTrackInJSON(Track track) { String result = "Track saved : " + track; return Response.status(201).entity(result).build(); } } Подскажите как должен выглядеть счетчик. Это должна быть функция вроде такой? или как вообще и как это потом вызвать из-под клиента: int count = 0; @POST @Path("/post") @Produces(MediaType.APPLICATION_JSON) public Integer getCountCalls(){ return count++; }
Ответы
Ответ 1
Все оказалось просто: в классе-клиенте появилось WebResource webResource1 = client.resource("http://localhost:8080/RESTfulExample/rest/json/metallica/counter"); ClientResponse response1 = webResource1.type("application/json").post(ClientResponse.class); String output1 = response1.getEntity(String.class); System.out.println(output1); а на сервере метод static int count = 0; @POST @Path("/counter") @Consumes(MediaType.APPLICATION_JSON) public Response createTackInJSON1() { String result = "Count = " + ++count; return Response.status(201).entity(result).build(); } обязательно нужно сделать переменную count статической , иначе счетчик будет все время показывать единицу.
Комментариев нет:
Отправить комментарий