基于Java-Jersey的RESTful webservice:处理文件实体的路径参数的最佳方法是什么
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于Java-Jersey的RESTful webservice:处理文件实体的路径参数的最佳方法是什么,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1478字,纯文字阅读大概需要3分钟。
内容图文
![基于Java-Jersey的RESTful webservice:处理文件实体的路径参数的最佳方法是什么](/upload/InfoBanner/zyjiaocheng/785/ca0914cb9185461788e3fdf28842e7d6.jpg)
我正在使用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);
等等.
解决方法:
您应该能够在@PathParam注释中使用正则表达式来处理所有路径过滤逻辑.例如,这将为您提供最多5个目录的文件路径:
@Path("{path:(?:[^/]+/){0,4}[^/]+}")
然后,您将该值注入到预期的方法中:
@Path("{path:(?:[^/]+/){0,4}[^/]+}")
/* Other attributes too... */
public Response getMediaFile(@PathParam("path") String path) {
File file=new File(MEDIA_HOME_DIR, path);
if(file.exists()) {
// Process file
}
else {
// No such file
}
}
正则表达式将处理“五个目录”限制,如果数字在将来从五个变化,则很容易修复.如果您只需要匹配.jpg文件(例如),您也可以更轻松地过滤文件名.
解决了这个问题,你只需要为媒体服务.
内容总结
以上是互联网集市为您收集整理的基于Java-Jersey的RESTful webservice:处理文件实体的路径参数的最佳方法是什么全部内容,希望文章能够帮你解决基于Java-Jersey的RESTful webservice:处理文件实体的路径参数的最佳方法是什么所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。