我只是创建一个小端点后端服务,并在localhost上正常工作。但是当应用程序部署到GAE时,我收到了内部服务器错误:
我编辑我的课程尽可能简单,但没有任何区别。 这是我的代码:
@Api(name = "meetApp", version = "v1")
public class RegisteredUsers {
@ApiMethod(name = "users.list", httpMethod = "get")
public String[] getRegisteredUsers(){
return new String [] {"test"};
}
以下是错误消息,在管理控制台上,请求被标记为okay(200)。
答案 0 :(得分:2)
您无法返回基元或任何基元的集合/数组,但SDK尚未更新,以防止您在执行此操作时构建应用程序或在本地进行测试。您需要创建一个POJO:
public class MyArray() {
private String[] strings;
public MyArray(String[] strings) {
this.strings = strings;
}
}
然后您的方法变为
public MyArray getRegisteredUsers(){
return new MyArray(new String[]{'test'});
}
然后,无论您何时收到该对象,都必须访问String
myArray.strings[0]
。
愚蠢,我知道。有关详细信息,请参阅my question here。您将在评论中看到@DanHolevoet(谁在Cloud Endpoints上工作并花时间编辑您的问题但没有回答它)确认您无法返回基元集合。
坦率地说,我不知道为什么会这样。在答案this same question I asked 4 months ago @JoSo州
当你考虑如何将appengine用于json并将其序列化为json时,这实际上是有意义的。
我对这个问题并不了解,但我不同意。据我所知,JavaScript数组与对象相同,只是使用枚举而不是命名属性,因此字符串数组应该易于序列化和解释。如果本地devserver可以做到......
我会停止咆哮。我确信有一个很好的理由不允许它。但是有兴趣知道它是什么,因为它会非常有用。
编辑:改进了代码