Dropwizard / Jersey子资源链接

时间:2015-10-10 20:25:24

标签: jersey dropwizard

我正在使用Dropwizard 8.2.0构建REST服务。我有2个资源:FolderResource和FileResource:

@Path("folder")
public class FolderResource {

   @Path("{name}/file")            
   public FileResource getFileResource() {
      return new FileResource();
   }
}

public class FileResource() {
   @GET
   @Path("{id}")
   @Produces("application/json")
   public Response getFileInfo() {
        return Response.ok().entity("{}").build();
   }
}

这里的意图是"文件夹/ xyz / file / 5"调用时,将调用getFileInfo()方法。 此泽西功能描述如下: https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2464

但是当嵌入Dropwizard时,不仅没有调用getFileInfo(),也没有调用getFileResource()函数。 如果我将@GET注释添加到getFileResource()方法,那么它会被调用,但返回FileResource JSON表示,这当然不是目标,并且与明确指出该方法不应该使用方法指示符注释的文档相反。 / p>

我做错了什么?

1 个答案:

答案 0 :(得分:1)

@Path("folder")@Path("{name}/file")会产生folder{name}/file

您需要在两者之间添加斜杠,即@Path("/{name}/file")。您在getFileInfo上也会遇到同样的问题,因此请将其重命名为@Path("/{id}")