JAX-RS资源方法可以返回多个图像吗?

时间:2016-06-10 18:47:29

标签: java jersey jax-rs

我们有一个Web应用程序,在运行算法后会生成2-3个图像。我们希望将这些图像返回给用户。我认为最好的设计是将图像存储在项目代码库之外:在/tmp目录之类的外部文件夹中。

首先,您是否同意此设计决定?我觉得每次运行算法时项目代码库都会变得臃肿。我的老板希望我将图像存储在我们的webapp中,但我把它们存放在/tmp目录中是个很好的例子。

其次,是否可以在单个JAX-RS资源方法中返回多个图像(最有可能是2或3)?我从未见过这样做过,所以我倾向于认为我应该编写一个通用资源方法来返回给定文件名的图像。

我非常感谢对这两个问题的反馈。在此先感谢:)

1 个答案:

答案 0 :(得分:1)

  

我们有一个Web应用程序,它在算法后产生2-3个图像   运行。我们希望将这些图像返回给用户。我认为最好的   设计是将图像存储在项目代码库之外:in   像/ tmp目录这样的外部文件夹。

     

首先,您是否同意此设计决定?我觉得这样   每次运行算法时,项目代码库都会变得臃肿。   我的老板要我将图像存储在我们的webapp中,但我做了一个   将它们存储在/ tmp目录中的好例子。

我认为,设计决策问题非常基于意见。我会告诉你我的想法,但我不能说这部分是一个“答案”,这只是一个意见。

正如我在评论中提到的,从我的角度来看,网页有一种非常标准的图像提供方式(即使客户端现在看起来很花哨的AJAX请求)。单个图像只有一个URL。我不会试图偏离它。

您决定接待它们取决于您。我可能会使用一个网络服务器,如nginx(而不是应用程序服务器),它针对服务静态内容(如图像,js文件等)进行了优化。

  

我觉得每次运行算法时项目代码库都会变得臃肿。

这部分让我很困惑。您正在生成图像文件。这只是数据。它不是代码,它并没有真正膨胀代码库。如果您的意思是占用存储代码的磁盘空间,请确保将其托管在其他位置。

  

其次,是否可以返回多个图像(最有可能是2或   3)在单个JAX-RS资源方法中?我从来没有见过这样做过,所以   我倾向于认为我应该为其编写通用资源方法   返回给定文件名的图像。

从某个意义上来说,这可能是 。您可以将图像编码为用于嵌入图像的文本。例如(从page explaining embedding images in html被盗):

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAAD
 NCAMAAAAsYgRbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c
 cllPAAAABJQTFRF3NSmzMewPxIG//ncJEJsldTou1jHgAAAARBJREFUeNrs2EEK
 gCAQBVDLuv+V20dENbMY831wKz4Y/VHb/5RGQ0NDQ0NDQ0NDQ0NDQ0NDQ
 0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0PzMWtyaGhoaGhoaGhoaGhoaGhoxtb0QGho
 aGhoaGhoaGhoaGhoaMbRLEvv50VTQ9OTQ5OpyZ01GpM2g0bfmDQaL7S+ofFC6x
 v3ZpxJiywakzbvd9r3RWPS9I2+MWk0+kbf0Hih9Y17U0nTHibrDDQ0NDQ0NDQ0
 NDQ0NDQ0NTXbRSL/AK72o6GhoaGhoRlL8951vwsNDQ0NDQ1NDc0WyHtDTEhD
 Q0NDQ0NTS5MdGhoaGhoaGhoaGhoaGhoaGhoaGhoaGposzSHAAErMwwQ2HwRQ
 AAAAAElFTkSuQmCC" alt="beastie.png">

您可以将JSON响应对象中的数据作为文本返回。我不会那样做,但这是一个选择。

我只是返回一个响应对象,其中包含获取实际图像的URL。这样可以获得更清晰的API。