通过 Google Cloud Endpoints 将 Java 源代码发送到 Google App Engine 的最佳解决方案
The most optimal solution for sending Java Source Code to Google App Engine via Google Cloud Endpoints
我正在开发一个需要通过 Google 云端点从客户端接受 Java 源代码的应用程序,然后 Google App Engine 将在其上运行。最简单的解决方案是从 Java 脚本客户端将 Java 源代码作为 String
发送,并创建一个接受 String
的端点。然而,超过 2kB 的 GET
请求会产生错误,源代码可能(通常通常)远大于 2kB。
这里需要注意的是不允许缩小代码。
那么最好的实现方式是什么?
非常感谢您尝试解决我的问题。
你用错了。 @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"
}
我正在开发一个需要通过 Google 云端点从客户端接受 Java 源代码的应用程序,然后 Google App Engine 将在其上运行。最简单的解决方案是从 Java 脚本客户端将 Java 源代码作为 String
发送,并创建一个接受 String
的端点。然而,超过 2kB 的 GET
请求会产生错误,源代码可能(通常通常)远大于 2kB。
这里需要注意的是不允许缩小代码。
那么最好的实现方式是什么?
非常感谢您尝试解决我的问题。
你用错了。 @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"
}