2016-05-31 21 views
-4

我正在开发一个应用程序,它需要通过Google Cloud Endpoints接受来自客户端的Java源代码,然后Google App Engine才能运行它。最简单的解决方案是从JavaScript客户端发送Java源代码作为String,并创建一个接受String的端点。然而,一个GET请求超过2kB的请求会给出错误,并且源代码可能(并且通常经常)远大于2kB。通过Google Cloud Endpoints将Java源代码发送到Google App Engine的最佳解决方案

这里需要注意的是,不允许缩小代码。

那么最好的办法是什么?

试图解决我的问题的高级谢谢。

+0

“不过GET/POST请求可以处理不超过2KB的数据“你在哪里读过这些数据? (GET请求确实是有限的,因为你只能将数据放入url并且URL有限制 - http://stackoverflow.com/questions/2659952/maximum-length-of-http-get-request)。 – zapl

+0

@zapl编辑我的错误,但问题仍然是一个Get请求大于2kB不起作用 –

+0

好吧,那么为什么不使用后? – zapl

回答

1

你用错了。 @Named参数成为url的一部分(如http://server.com/api?source=Java+source+here.),并且与GET请求具有相同的限制。

您可以将数据封装在pojo中并将其添加为方法参数。例如

@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; 
    } 
} 

即允许与请求主体的适当POST:

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

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

(源变成在JSON对象封装的)

随着答复

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

谢谢,@ zapl我希望我能够对你的答案进行投票,但这个问题使我的声望升高 –

+0

@SwagatoChatterjee np,我已经超过了我的需要。 PS:当你不使用“请不要......”以及要求“最优解决方案”的粗鲁的探测请求时,你会得到较少的赞誉:) – zapl

+0

感谢您教我一些礼节。 –

相关问题