6

Würde die folgende Konvertierung für die Konvertierung von Java-Servlet zu Google App-Engine-Cloud-Endpunkt gelten?Servlet-Schema in App-Engine-Endpunktschema konvertieren

VON

public void doPost(HttpServletRequest req, HttpServletResponse res) 
throws ServletException, IOException { … } 

TO

@ApiMethod(name = "save_blob_key", path = "save_blob_key" httpMethod = HttpMethod.POST) 
public void saveBlobKey(HttpServletRequest req) throws IOException { … } 

RAHMEN:

Ich versuche Endpunkt zu verwenden Blobstore Rückruf zu verarbeiten.

Ref: https://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App

PROBLEM:

Der große hickup hier ist, dass die beiden folgenden Zeilen scheinen die Klasse HttpServletRequest und ich weiß nicht, zu verlangen, wenn ich es Endpunkt passieren kann.

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req); 

EDIT:

Ich habe ziemlich viele Routen versucht, dieses Problem zu lösen. Mein letzter ist combining blob servlet with endpoint api. Trotzdem kann ich den Code nicht zum Laufen bringen. Also geht das Kopfgeld an jeden, der eine Lösung oder eine Information liefert, die tatsächlich zu einer Lösung führt.

+0

Es ist schon viele Jahre her, dass Sie eine Lösung gefunden haben? – Micro

Antwort

3

Sie können Endpoints derzeit nicht als Rückruf für den Blobstore blobstoreService.createUploadUrl verwenden. Siehe hierzu related answer. Es gibt eine offene Feature-Anfrage für die Unterstützung von mediaUpload, die wahrscheinlich ähnliche Funktionalität wie gewünscht bieten würde. Fühlen Sie sich frei, es zu markieren, um Unterstützung anzuzeigen und automatische Updates zu erhalten.

Was ich empfehlen würde, wäre eine von zwei möglichen Alternativen, abhängig von der Menge der Daten, die Sie hochladen möchten.

Wenn Sie kleine Mengen von Blobdaten hochladen, die in den Datenspeicher passen, verwenden Sie den Typ ShortBlob (bis zu 500 Byte) oder Blob (bis zu 1 MB) in der Endpoint-Entitätsklasse. Endpoints werden die Serialisierung im Backend durchführen und base64-codierte Strings über die Client-Bibliotheken erwarten (und zurücksenden). Dies ist ein sehr einfacher und direkter Ansatz.

Wenn Sie Blobs mit mehr als 1 MB bereitstellen möchten, verwenden Sie zunächst die Google Cloud Storage JSON API. Diese API verwendet die gleiche Client-Bibliothek wie Endpoints, sodass Sie sich keine Sorgen darüber machen müssen, eine andere Bibliothek mit Ihrer Anwendung zu bündeln. This page enthält ein Beispiel zum Einfügen eines Blobs in Google Cloud Storage mit der Java-Client-Bibliothek.

+0

Das Problem mit der Endpoints-Unterstützung für mediaUpload ist jetzt fast 2,5 Jahre alt. Nichts ist passiert. Dies ist typisch für AppEngine-Probleme. Ich frage mich, wann Google AppEngine in einem Frühjahr oder Herbst Reinigung loswerden wird? – rakensi