我正在使用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>
我做错了什么?
答案 0 :(得分:1)
@Path("folder")
和@Path("{name}/file")
会产生folder{name}/file
。
您需要在两者之间添加斜杠,即@Path("/{name}/file")
。您在getFileInfo
上也会遇到同样的问题,因此请将其重命名为@Path("/{id}")
。