Wir haben eine Webanwendung, die 2-3 Bilder erzeugt, nachdem ein Algorithmus ausgeführt wird. Wir möchten diese Bilder an den Benutzer zurückgeben. Ich dachte, das beste Design wäre, die Bilder außerhalb der Projektcode-Basis zu speichern: in ein externer Ordner wie das Verzeichnis/tmp.
Zunächst einmal, stimmen Sie dieser Designentscheidung zu? Ich fühle mich wie die Projektcode-Basis würde jedes Mal aufgebläht, wenn wir den Algorithmus ausführen. Mein Chef wollte, dass ich die Bilder in unserer Webapp speicher, aber ich machte einen guten Fall für das Speichern in dem/tmp-Verzeichnis.
Die Design-Entscheidungsfrage ist ziemlich meinungsbezogen, denke ich. Ich gebe dir meine Gedanken, aber ich kann nicht sagen, dass dieser Teil eine "Antwort" ist, es ist nur eine Meinung.
Wie ich in einem Kommentar erwähnt habe, haben Webseiten aus meiner Sicht eine ziemlich standardmäßige Art, Bilder zu liefern (selbst wenn der Client jetzt ausgefallene AJAX-Anfragen ist). Es gibt eine einzelne URL für ein einzelnes Bild. Ich würde nicht versuchen, davon abzuweichen.
Wohin Sie sich entscheiden, sie zu hosten, bleibt Ihnen überlassen. Ich würde wahrscheinlich einen Webserver wie Nginx (im Gegensatz zu einem Anwendungsserver), die für die Bereitstellung von statischen Inhalten wie Bilder, JS-Dateien usw. optimiert ist.
Ich fühle mich wie die Projekt-Code-Basis bekommen würde aufgebläht jedes Mal, wenn wir den Algorithmus ausführen.
Dieser Teil verwirrt mich. Sie produzieren Bilddateien. Dies sind nur Daten. Es ist kein Code und es erhöht nicht wirklich die Code-Basis. Wenn Sie meinen, Speicherplatz auf der Festplatte zu verbrauchen, auf der Sie Ihren Code speichern, dann sollten Sie ihn woanders hosten.
Zweitens, ist es möglich, mehrere Bilder (höchstwahrscheinlich 2 oder 3) in einer einzigen JAX-RS-Ressourcenmethode zurückzugeben? Ich habe das noch nie gesehen, also Ich bin geneigt zu denken, ich sollte eine generische Ressource-Methode für schreiben ein Bild mit dem Dateinamen zurückgeben.
Es ist möglich in einem Sinn des Wortes. Sie könnten die Bilder als Text codieren, der für eingebettete Bilder verwendet werden würde.Zum Beispiel (von page explaining embedding images in html gestohlen):
<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">
Sie könnten diese Daten im JSON-Antwort-Objekt als Text zurück. Ich würde das nicht tun, aber es ist eine Option.
Ich würde nur ein Antwortobjekt zurückgeben, das die URLs hat, wo die tatsächlichen Bilder zu erhalten sind. Das sorgt für eine sauberere API.
Aus meiner Sicht haben Webseiten eine ziemlich standardmäßige Art, Bilder zu liefern (selbst wenn der Kunde jetzt ausgefallene AJAX-Anfragen hat). Es gibt eine einzelne URL für ein einzelnes Bild. Ich würde nicht versuchen, davon abzuweichen. Lassen Sie Ihre Ressource die 2-3 URLs für die Bildorte zurückgeben. – Chill
Da der Algorithmus bei jeder Iteration 2-3 Bilder erzeugt und wir diese Bilder mindestens eine Woche festhalten müssen, befürchte ich, dass die Codebasis aufgebläht wird, wenn wir die Bilder in der Codebasis speichern. Deshalb wollte ich sie an einem externen Ort speichern. Sinn ergeben? – ktm5124