如何访问查询参数

时间:2014-12-19 14:11:39

标签: java rest jersey

我的客户将发送与以下内容相对应的请求:

GET http://example.com/services/rs/calendar/origin/destination/outwardDate/returnDate?nbPax=&typo=&card

我这样做:

  @Path("/service/rs") public class MyServiceImpl {
        public MyServiceImpl() {
            super();
        }

        @GET
       @Path("/{origin}/{destination}/{goDate}/{returnDate}")
    public Response getCalendar(@PathParam("origin") String origin, @PathParam("destination") String destination, @PathParam("goDate") String goDate, @PathParam("returnDate") String returnDate, @QueryParam("nbPax") String nbPax, @QueryParam("typo") String typo, @QueryParam("card") String card) {

    //print my parameters        
    return Response.ok("Success").build();
        }
    }

无法映射我的查询参数,404失败,为什么?

2 个答案:

答案 0 :(得分:1)

您需要更正方法的签名,并在@Path注释中添加占位符,以将路径部分映射到那些@PathParam - 带注释的参数。查询参数的部分应使用@QueryParam注释。

@GET
@Path("/calendar/{origin}/{destination}/{outwardDate}/{returnDate}")
public Response getInfo(@PathParam("origin") String origin,
                        @PathParam("destination") String destination, 
                        @PathParam("outwardDate") String outwardDate, 
                        @PathParam("returnDate") String returnDate,
                        @QueryParam("nbPax") String nbPax, 
                        @QueryParam("typo") String typo, 
                        @QueryParam("card")  String card) {

另外,请注意,如果您的Web应用程序植根于某个上下文路径(这是在Tomcat或JBoss等Servlet容器中部署的应用程序的典型情况),则上下文路径将成为URL的一部分,例如

http://[server host]/[app context path]/[class' @Path]/[method's @Path]

答案 1 :(得分:0)

这是地址

http://example.com/services/rs/calendar/

你打电话

http://example.com/services/rs/calendar/origin/destination/outwardDate/returnDate

你将“origin”(和其余的)作为参数处理,而它实际上是地址的一部分,我相信你没有附加的REST服务:

http://example.com/services/rs/calendar/origin/destination/outwardDate/returnDate

这就是为什么你得到404。

你试图提取的那些词是@PathParam类型,@ QueryParam是你在?签名后所拥有的