在我的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错误。
我在第二种方法中遗漏了什么?
答案 0 :(得分:0)
好的,问题是,REST接口分布在多个类上,还有另一个类有@Path(" ... / {scenarioId} / instance / {instanceId})注释。 我把方法移到那里,它被调用了。显然,这会导致冲突,甚至认为在此类中没有直接为此路径声明@GET方法。
回想起来,我可能应该在问题中添加这些细节。