【问题标题】:Can a JAX-RS resource method return multiple images?JAX-RS 资源方法可以返回多个图像吗?
【发布时间】:2016-06-10 18:47:28
【问题描述】:

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

首先,您同意这个设计决定吗?我觉得每次我们运行算法时项目代码库都会变得臃肿。我的老板希望我将图像存储在我们的 web 应用程序中,但我提出了将它们存储在 /tmp 目录中的好案例。

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

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

【问题讨论】:

  • 从我的角度来看,网页有一种非常标准的图像服务方式(即使客户端现在是花哨的 AJAX 请求)。单个图像有一个 URL。我不会试图偏离这一点。让您的资源返回图像位置的 2-3 个 URL。
  • 由于算法每次迭代都会生成 2-3 张图像,而且我们必须至少保留这些图像一周,我担心如果我们存储这些图像,代码库会变得臃肿在代码库内部。这就是为什么我想将它们存储在外部位置。有意义吗?

标签: java jersey jax-rs


【解决方案1】:

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

首先,您同意这个设计决定吗?我觉得像 每次我们运行算法时,项目代码库都会变得臃肿。 我的老板希望我将图像存储在我们的 web 应用程序中,但我做了一个 将它们存储在 /tmp 目录中的好案例。

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

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

您决定在哪里托管它们取决于您。我可能会使用 nginx 之类的 Web 服务器(而不是应用程序服务器),它针对提供静态内容(如图像、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 更简洁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2012-07-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多