泽西@GET方法无法使用2 Path Params

时间:2016-05-02 12:18:43

标签: java rest jersey

在我的Jersey REST界面中,有两种方法(其中包括):

@GET
@Path("{scenarioId}/instance")
@Produces(MediaType.APPLICATION_JSON) 
public Response getScenarioInstances(
        @Context UriInfo uri,
        @PathParam("scenarioId") int scenarioId,
        @QueryParam("filter") String filterString) {
    // code here
    return Response.ok(result.toString(), MediaType.APPLICATION_JSON).build();
}

@GET
@Path("{scenarioId}/instance/{instanceId}")
@Produces(MediaType.APPLICATION_JSON)
public Response getScenarioInstance(
        @Context UriInfo uri,
        @PathParam("scenarioId") int scenarioId,
        @PathParam("instanceId") int instanceId) {
    // code here
    return Response.ok(result.toString(), MediaType.APPLICATION_JSON).build();
}

通过Postman向/ 2 / instance发出GET请求,调用第一个方法并生成一个包含所有实例的JSON对象。

GET请求,例如/ 2 / instance / 2但是没有调用第二种方法,导致404错误。

我在第二种方法中遗漏了什么?

1 个答案:

答案 0 :(得分:0)

好的,问题是,REST接口分布在多个类上,还有另一个类有@Path(" ... / {scenarioId} / instance / {instanceId})注释。 我把方法移到那里,它被调用了。显然,这会导致冲突,甚至认为在此类中没有直接为此路径声明@GET方法。

回想起来,我可能应该在问题中添加这些细节。