Java Rest API查询注释



我当前正在尝试向我的REST API添加新功能。

基本上,我想添加将查询参数添加到路径末端的功能,并将其变成例如所有查询选项的地图。

我当前的代码允许我做

之类的事情
localhost:8181/cxf/check/
localhost:8181/cxf/check/format
localhost:8181/cxf/check/a/b
localhost:8181/cxf/check/format/a/b

这将使用所有@pathparam作为字符串变量生成响应。

我现在想做的是:

localhost:8181/cxf/check/a/b/?x=abc&y=def&z=ghi&...
localhost:8181/cxf/check/format/a/b/?x=abc&y=def&z=ghi&...

,然后我会生成一个可以与PathParam一起使用的地图来构建响应

x => abc
y => def
z => ghi
... => ...

我在想到这样的东西[下面]

@GET
@Path("/{format}/{part1}/{part2}/{query}")
Response getCheck(@PathParam("format") String format, @PathParam("part1") String part1, @PathParam("part2") String part2, @QueryParam("query") Map<K,V> query);

以下是我当前的接口代码。

@Produces(MediaType.APPLICATION_JSON)
public interface RestService {
@GET
@Path("/")
Response getCheck();
@GET
@Path("/{format}")
Response getCheck(@PathParam("format") String format);
@GET
@Path("/{part1}/{part2}")
Response getCheck(@PathParam("part1") String part1,@PathParam("part2") String part2);
@GET
@Path("/{format}/{part1}/{part2}")
Response getCheck(@PathParam("format") String format, @PathParam("part1") String part1, @PathParam("part2") String part2);
}

QueryParam("") myBean允许注入所有查询参数。还删除最后一个{query}零件

@GET
@Path("/{format}/{part1}/{part2}/")
Response getCheck(@PathParam("format") String format, @PathParam("part1") String part1, @PathParam("part2") String part2, @QueryParam("") MyBean myBean);
 public class MyBean{
    public void setX(String x) {...}
    public void setY(String y) {...}  
 }

您也无法声明参数并解析URI。如果您可以接受非固定参数

,此选项可能会很有用
 @GET
 @Path("/{format}/{part1}/{part2}/")
 public Response getCheck(@PathParam("format") String format, @PathParam("part1") String part1, @PathParam("part2") String part2, @Context UriInfo uriInfo) {
    MultivaluedMap<String, String> params = uriInfo.getQueryParameters();
    String x= params.getFirst("x");
    String y= params.getFirst("y");
}

相关内容

  • 没有找到相关文章

最新更新