【发布时间】:2015-07-20 17:44:31
【问题描述】:
我有一个 RESTful API,它的文档说某个查询参数是可选的,并且不提供默认参数。因此,我可以提供该值,也可以不将其作为参数在 GET 请求中发送。
例子:
-
queryA为必填项 -
queryB是可选的(可以在没有它的情况下发送GET)
这应该可行:
http://www.example.com/service/endpoint?queryA=foo&queryB=bar
这也应该有效:
http://www.example.com/service/endpoint?queryA=foo
如何为Jersey-Proxy 制作一个可以做到这一点的客户端界面? 我没有要与之交互的服务器端代码,因此我通过 Jersey-Proxy 使用 org.glassfish.jersey.client.proxy.WebResourceFactory 来生成客户端以与服务器 API 进行交互。
示例界面:
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);
}
我知道我可以制作另一种方法:
@Path("/endpoint")
@GET
public Response getEndpoint(
@QueryParam("queryA") String first);
但是当您有多个可选字段时会发生什么?我不想对它们进行所有可能的突变!
【问题讨论】:
-
这可能会回答你的问题:stackoverflow.com/questions/13968261/…
-
那是服务器端的,不是客户端的。