带有List或Array参数的端点API方法

kir*_*nkk 2 google-app-engine android endpoint google-cloud-endpoints

我想使用端点API将对象或列表数组发送到app引擎

@ApiMethod(name = "insertGroupMembers")
public List<GroupMembers> insertGroupMembers(Collection<GroupMembers> members) {
    EntityManager mgr = getEntityManager();
    List<GroupMembers> listMembers = new ArrayList<>(); 
    try {
        for (GroupMembers groupMember : members) {
            mgr.persist(groupMember);
            listMembers.add(groupMember);
        }

    } finally {
        mgr.close();

    return listMembers;

}
Run Code Online (Sandbox Code Playgroud)

但是它显示了生成api库时的错误如下: -

说明资源路径位置类型生成Cloud Endpoints类的API元数据时出现问题:com.google.api.server.spi.config.validation.CollectionResourceException:groupmembersendpoint.com.appbell.tagalone.GroupMembersEndpoint.insertGroupMembers参数(类型java .util.Collection):非法参数类型(集合类型'java.util.Collection'中的'class com.appbell.tagalone.GroupMembers').不允许使用数组或实体类型集合.TagAlone-AppEngine未知的Google App Engine云端点问题标记

wil*_*lma 5

我不记得我在哪里读它,但是 - 如果我没弄错 - CE不允许数组或列表作为方法参数.不要问我为什么.我记得看到的解决方案是将一个对象传递给方法,并将列表作为对象属性之一.

然后你的方法看起来像:

public List<GroupMembers> insertGroupMembers(MembersWrapper membersWrapper) {
  for (GroupMembers groupMember : membersWrapper.members) {
    mgr.persist(groupMember);
    listMembers.add(groupMember);
  }
  …
}
Run Code Online (Sandbox Code Playgroud)