我想使用端点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;
}
但它显示了生成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云端点问题标记
答案 0 :(得分:5)
我不记得我在哪里读它,但是 - 如果我没弄错的话 - CE不允许数组或列表作为方法参数。不要问我为什么。我记得看到的解决方案是将一个对象传递给方法,并将列表作为对象属性之一。
然后你的方法看起来像:
public List<GroupMembers> insertGroupMembers(MembersWrapper membersWrapper) {
for (GroupMembers groupMember : membersWrapper.members) {
mgr.persist(groupMember);
listMembers.add(groupMember);
}
…
}
答案 1 :(得分:0)
此外,如果您正在接收Custom VO对象,请确保使用POST注释该方法。 ex @ApiMethod(httpMethod =&#34; POST&#34;,path =&#34; insertGroupMembers&#34;) 我浪费了很多时间,因为从客户端发送的参数结果为空,只是意识到服务器上收到的数据为空。 重新生成客户端库并自动将自定义VO对象作为参数提供!