2015-10-10 102 views
2

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

@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 /文件/ 5” 之称,getFileInfo()方法将被调用。 此泽西功能描述如下: https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2464

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

我在做什么错?

回答

1

@Path("folder")@Path("{name}/file")结果为folder{name}/file

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