3

如何将多个实体从客户端传递到 Google Cloud Endpoint?

例如,传递单个实体很容易在服务器的 Endpoint api 源文件中完成:

public class SomeEndpoint {
...
   @ApiMethod(...)
   public MyEntity someMethod(MyEntity someEntity) {
   ...
   }
...
}

然后在客户中我可以很容易地打电话

endpoint.someMethod(someEntity).execute()

但是,如果我想将两个实体传递给一个端点怎么办?,像这样:

 @ApiMethod(...)
 public MyEntity otherMethod(MyEntity someEntity, MyEntity someOtherEntity) {
    ...
 }

这不起作用,GPE 只生成一个带有单个 MyEntity 参数的端点库。

是否可以传递多个实体参数?

谢谢。

4

2 回答 2

9

您不能在请求正文中发送多个实体类型。您需要创建一个包含这两个实体的包装实体,例如:

class MyWrapperEntity {
  MyEntity someEntity;
  MyOtherEntity someOtherEntity;
  // ...
}

但是,这不是您的示例所显示的(实体是同一类型)。改为使用集合实体的aList<MyEntity>或内部,例如:Map<String, MyEntity>

class MyEntityCollection {
  List<MyEntity> items;
  // ...
}
于 2013-03-17T04:22:17.510 回答
0

使用“命名”注释...

@ApiMethod(name = "sendStuff")
public void sendStuff( @Named("clientId") String clientId, @Named("stuff") String stuff )

对于 android,客户端代码看起来像这样

SendStuff sl = service.sendStuff( clientId, stuff );
于 2013-03-16T17:55:27.443 回答