将几个@QueryParam映射到一个自定义实体

时间:2015-08-11 07:38:30

标签: java jersey jax-rs

例如,我有课

class MyQuery {
   Date start;
   Date end;
   ChronoUnit scale; // ChronoUnit is enum
}

我想声明方法如:

@Path("/myreport")
public Response generateReport(@EntityFromQuery MyQuery query) {
   // logic to generate.
}

我想要在遇到网址时调用此方法

/ myreport开始= 2015年1月1日和安培;端= 2015年1月31日&安培;比例= WEEKS

我使用泽西岛。有没有内部工具来实现这一目标? 或者我需要编写自己的MessageBodyReader?

2 个答案:

答案 0 :(得分:2)

您可以在JAX-RS资源的Java方法中查看将使用的@BeanParam注释,而不是@EntityFromQuery

MyQuery课程中,您只需要使用@QueryParam("start")等注释getter。

请参阅https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/javax/ws/rs/BeanParam.html

HTH。

答案 1 :(得分:0)

开箱即用(你可能想先查看一些教程......)。您可能更容易接受传入请求的所有GET参数作为字符串并在以后转换它们:

@GET
@Path("/myreport")
@Produces(MediaType.{whatever you want to return})
public Response generateReport(@QueryParam("start") String start, @QueryParam ("end") String end, @QueryParam ("scale") String scale) {
   // convert from string to date and from string to chroneUnit
   //do some logic..
}