Mam interfejs API RESTful API, który mówi, że pewien parametr zapytania jest opcjonalny i nie podaje domyślnego argumentu. Mogę więc podać wartość lub nie wysłać jej w żądaniu GET jako parametru.Klient sieci Jersey/JAX-RS i opcjonalny (nie domyślny) @QueryParam (strona klienta)
przykład:
queryA
jest wymaganequeryB
jest opcjonalnie (można wysłaćGET
bez niego)
ta powinna działać:
http://www.example.com/service/endpoint?queryA=foo&queryB=bar
T Jego powinny również działać:
http://www.example.com/service/endpoint?queryA=foo
Jak zrobić interfejs klienta dla Jersey-Proxy że można to zrobić ?? Nie mam kodu po stronie serwera do interfejsu, więc używam org.glassfish.jersey.client.proxy.WebResourceFactory
przez Jersey-Proxy, aby wygenerować klienta do interakcji z interfejsem API serwera.
interfejs próbki:
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
@Path("/service")
@Produces("application/json")
public interface ServiceInterface {
@Path("/endpoint")
@GET
public Response getEndpoint(
@QueryParam("queryA") String first,
@QueryParam("queryB") String second);
}
wiem, że mogę zrobić inną metodę:
@Path("/endpoint")
@GET
public Response getEndpoint(
@QueryParam("queryA") String first);
Ale co się dzieje, gdy masz wiele pól opcjonalnych ?? Nie chcę robić ich wszystkich możliwych mutacji!
To może odpowiedzieć na pytanie: http://stackoverflow.com/questions/13968261/required-queryparam-in-jax-rs-and-what-to-do-in-their-absence – quintin
Że jest po stronie serwera, a nie po stronie klienta. – justderb