-4

Ich entwickle eine Anwendung, die Java-Quellcode vom Client über die Google Cloud Endpoints akzeptieren muss und an dem die Google App Engine arbeiten würde es. Die einfachste Lösung bestand darin, den Java-Quellcode als String vom JavaScript-Client zu senden und einen Endpunkt zu erstellen, der die String akzeptiert. Jedoch eine GET Anfrage mehr als 2kB gibt Fehler und Quellcodes können (und sind in der Regel oft) weit größer als 2kB.Die optimale Lösung für das Senden von Java-Quellcode an Google App Engine über Google Cloud Endpoints

Es ist wichtig zu beachten, dass eine Minimierung des Codes nicht erlaubt ist.

Dann was sollte der beste Weg sein, um so zu erreichen?

Ein fortgeschrittener Dank für den Versuch, mein Problem zu lösen.

+0

„Allerdings GET/POST-Anfrage kann nicht mehr als 2kB Daten verarbeiten "wo hast du das gelesen? (GET-Anfragen sind in der Tat begrenzt, da Sie nur Daten in die URL eingeben können und URLs ein Limit haben - http://stackoverflow.com/questions/2659952/maximum-length-of-http-get-request). – zapl

+0

@zapl bearbeitet meinen Fehler aus, aber das Problem bleibt eine Get-Anfrage größer als 2kB funktioniert nicht –

+0

Ok, dann warum nicht Post verwenden? – zapl

Antwort

1

Sie verwenden es falsch. @Named Parameter werden Teil der URL (wie http://server.com/api?source=Java+source+here.), und das hat die gleichen Einschränkungen wie eine GET-Anfrage.

Sie können Ihre Daten in einem Pojo kapseln und als Methodenparameter hinzufügen. Zum Beispiel

@Api(name = "myApi", version = "v1") 
public class MyApi { 

    public static class PseudoCon { 
     public String foo; 
    } 

    public static class SourceContainer { 
     public String source; 
    } 

    @ApiMethod(name = "pseudo", path = "pseudo", httpMethod = HttpMethod.POST) 
    public PseudoCon getPseudoCode(SourceContainer sourceContainer){ 
     String source = sourceContainer.source; 
     PseudoCon result = new PseudoCon(); 
     result.foo = source.substring(0, 1); 
     return result; 
    } 
} 

, die mit einem Anforderungstext für eine richtige POST erlaubt:

POST http://localhost:8888/_ah/api/myApi/v1/pseudo 

{ 
"source": "Java source here." 
} 

(Quelle in einem json Objekt gekapselt wird)

Mit Antwort

200 OK 
{ 
"foo": "J" 
} 
+0

Danke, @zapl Ich wünschte, ich könnte Ihre Stimme abstimmen, aber diese Frage tötete meinen Ruf für die Verbesserung –

+0

@SwagatoChatterjee np, ich habe mehr als ich brauche. PS: Sie werden weniger Downvotes erhalten, wenn Sie keine unhöflich klingenden Anfragen mit "bitte unterlassen von ..." verwenden und nach "Die optimale Lösung" fragen :) – zapl

+0

Danke, dass Sie mir eine Etikette beigebracht haben. –

Verwandte Themen