Jersey Client / JAX-RS et optionnel (pas par défaut) @QueryParam (côté client)

J'ai une API RESTful qui explique qu'un certain requête paramètre est facultatif, et ne fournit pas un argument par défaut. Donc, je peux fournir de la valeur ou de ne pas l'envoyer dans la requête GET en tant que paramètre.

Exemple:

  • queryA est nécessaire
  • queryB est facultatif (peut envoyer GET sans elle)

Cela devrait fonctionner:

http://www.example.com/service/endpoint?queryA=foo&queryB=bar

Cela devrait aussi fonctionner:

http://www.example.com/service/endpoint?queryA=foo

Comment puis-je faire une interface client pour Jersey-Proxy qui peut le faire?? Je n'ai pas le code côté serveur à l'interface avec donc je suis en utilisant org.glassfish.jersey.client.proxy.WebResourceFactory via Jersey-Proxy pour générer le client d'interagir avec le serveur de l'API.

De l'échantillon de l'interface:

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);

}

Je sais que je peux faire une autre méthode:

    @Path("/endpoint")
    @GET
    public Response getEndpoint(
            @QueryParam("queryA") String first);

Mais ce qui arrive quand vous avez plusieurs champs optionnels?? Je ne veux pas faire tout son possible mutation de!

source d'informationauteur justderb