我正在使用 jersey 编写基于 Java 的 REST Web 服务。我正在为其编写 Web 服务的实体是一个媒体文件。请求媒体文件的客户端需要将路径和文件名作为路径参数发送。允许的媒体路径深度可达五个目录。现在的挑战是编写一个方法来处理所有路径深度的可能性。就业务场景而言,使用路径参数是唯一允许的选择。这是处理媒体文件请求的方法契约:
public Response getMediaFile(@PathParam("path") String path,
@PathParam("filename") String filename);
这种方法的问题在于,如果请求类似于 /media/filedir1/filedir2/filename 那么文件名将无法正确获取。
我实施的解决方案是,我重载了这个方法来处理所有目录深度,但我并不相信这是最好的解决方案:
public Response getMediaFile(@PathParam("path1") String path1,
@PathParam("path2") String path2,
@PathParam("filename") String filename);
public Response getMediaFile(@PathParam("path1") String path1,
@PathParam("path2") String path2,
@PathParam("path3") String path3,
@PathParam("filename") String filename);
等等。