Google Cloud Endpoints中的多个实体参数

时间:2013-03-16 14:30:24

标签: google-cloud-endpoints

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

例如,在服务器的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参数的端点库。

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

感谢。

2 个答案:

答案 0 :(得分:9)

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

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

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

class MyEntityCollection {
  List<MyEntity> items;
  // ...
}

答案 1 :(得分:0)

使用'named'注释......

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

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

SendStuff sl = service.sendStuff( clientId, stuff );