我有两种方法的资源:

@GET
@Path("/{date}")
public Response getPartnerInteractionsByDate(
        @PathParam("partnerId") int partnerId,
        @PathParam("date") String date
);

@GET
@Path("/{interactionId}")
public Response getPartnerInteraction(
        @PathParam("partnerId") int partnerId,
        @PathParam("interactionId") int interactionId
);


如何选择一项或另一项服务?如果我将“ 1”设置为interactId,则仍然执行带有日期的方法。
我正在使用apache cxf 3.0.1。谢谢

最佳答案

有两个问题。首先是您的Path必须包含您要绑定的PathParam。其次,您的两条路径是相同的,因为它们都使用2个相同类型的参数(cxf无法知道int和包含int的字符串之间的区别)。

尝试这样的事情:

@GET
@Path("/{partnerId}/date/{date}")
public Response getPartnerInteractionsByDate(
        @PathParam("partnerId") int partnerId,
        @PathParam("date") String date
);


@GET
@Path("/{partnerId}/{interactionId})
public Response getPartnerInteraction(
        @PathParam("partnerId") int partnerId,
        @PathParam("interactionId") int interactionId
);

10-06 13:30