我的客户将发送与以下内容相对应的请求:
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失败,为什么?
答案 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是你在?
签名后所拥有的