У нас есть веб-приложение, которое создает 2-3 изображения после запуска алгоритма . Мы хотим вернуть эти изображения пользователю. Я думал, что лучший дизайн будет хранить изображения вне базы кода проекта: в внешняя папка, например каталог/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.
С моей точки зрения, веб-страницы имеют довольно стандартный способ обслуживания изображений (даже если клиент теперь представляет собой причудливые запросы AJAX). Для одного изображения есть один URL. Я бы не стал отступать от этого. Сделайте свой ресурс возвратом 2-3 URL-адресов для местоположений изображений. – Chill
Поскольку алгоритм производит 2-3 изображения на каждой итерации, и мы должны удерживать эти изображения в течение как минимум недели, я опасаюсь, что база кода станет раздутой, если мы сохраним изображения внутри базы кода. Вот почему я хотел хранить их во внешнем месте. Имеют смысл? – ktm5124