Gostaria de sugestões de como posso reduzir o numero de requisições http.
A situação atual do lado Client é a seguinte:
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
{.....}
private void testAdd() throws InterruptedException{
Form form = new Form();
form.param("param1", "111");
form.param("param2", "22222");
form.param("param3", "33333");
form.param("param4", "4444");
form.param("param5", "55");
form.param("param6", "666");
form.param("param7", "ma");
form.param("param8", "8");
form.param("param9", "N");
form.param("param10", "observacao");
form.param("param11", "condicao");
form.param("param12", "porta");
form.param("param13", "13");
String callResult = client
.target(REST_SERVICE_URL)
.request(MediaType.APPLICATION_XML)
.put(Entity.entity(form,
MediaType.APPLICATION_FORM_URLENCODED_TYPE),
String.class);
}
A situação do lado Server é a seguinte:
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
{......}
@PUT
@Path("/caminho")
@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response createVenda(
@FormParam("param1") int param1,
@FormParam("param2") int param2,
@FormParam("param3") int param3,
@FormParam("param4") int param4,
@FormParam("param5") double param5,
@FormParam("param6") double param6,
@FormParam("param7") String param7,
@FormParam("param8") int param8,
@FormParam("param9") String param9,
@FormParam("param10") String param10,
@FormParam("param11") String param11,
@FormParam("param12") String param12,
@FormParam("param13") int param13,
@Context HttpServletResponse servletResponse,
@Context Request request) throws IOException{
Venda venda = new Venda(
param1,
param2,
param3,
param4,
param5,
param6,
param7,
param8,
param9,
param10,
param11,
param12,
param13
);
EntityTag etag = new EntityTag(Integer.toString(venda.hashCode()));
ResponseBuilder builder = request.evaluatePreconditions(etag);
if(builder != null){
return builder.build();
}
vendaDao.addVenda(venda);
builder = Response.noContent();
return builder.build();
}
Se eu precisar enviar 200 itens, serão 200 requisições em que apenas tem diferença no valor dos parâmetros passados, se eu conseguisse passar uma especie de List e tratar isto no lado servidor seria mais interessante, eu acredito.
Sugestões?