java - Jersey @GET 方法不适用于 2 个路径参数

标签 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 错误。

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

最佳答案

好吧,问题是,REST 接口(interface)分布在多个类中,并且另一个类具有 @Path(".../{scenarioId}/instance/{instanceId}) 注释。 我将方法移到那里,然后调用它。显然这会导致冲突,即使在此类中没有直接为此路径声明 @GET 方法。

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

关于java - Jersey @GET 方法不适用于 2 个路径参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982276/

相关文章:

java - 如何在编译时验证方法参数来自某个集合

java - 为什么循环会死? (科拉茨猜想)

java - 多个 JVM 与并发任务

rest - 如何在 REST 中管理状态

java - 使用 Java 中的 RESTful API,生成工件。

java - 为什么使用 Jersey 在 JSON 中用 @ 返回名称

java - 无法从 Jersey GET 响应中获取 JSON 数据

java - Object 类中如何使用 getName() 方法?

java - 为什么 Jersey 中的 XmlRootElementJaxbProvider 使用 SAXSource

java - 具有 Web 和 RESTful 接口(interface)的 Google App Engine 上的应用程序