从端点生成String响应API方法(java)

时间:2014-08-09 04:53:47

标签: java api google-app-engine google-cloud-sql

我正在开发google端点API,因为我只从API method.so获得了POJO类响应 如何从谷歌端点API方法获得String或Integer,Float,布尔响应?

2 个答案:

答案 0 :(得分:0)

在Endpoint方法中,返回值类型不能是简单类型,如String或int。返回值必须是POJO,数组或集合。

如果您想要某种String的变通方法,请查看以下主题:Why don't Google Cloud Endpoints Support Simple Object Return Types?

答案 1 :(得分:0)

最好的方法是创建简单的不可变值容器类(太糟糕了,我们没有scala支持,你可以只使用case类:P),例如

public final class StringHolder {
    private final String s;
    StringHolder(final String s) {
        this.s = Preconditions.checkNotNull(s, "null string input");
    }
    public String get() { return s; }

    @Override
    public String toString() {
        return "StringHolder{" + "s='" + s + '\'' + '}';
    }

    // hashCode and equals are optional
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        final StringHolder that = (StringHolder) o;
        return s.equals(that.s);
    }
    @Override
    public int hashCode() {
        return s.hashCode();
    }
}

null检查是可选的,你可以选择允许空值,但在这种情况下,你甚至可以引入一个工厂方法,并且在空输入的情况下总是返回相同的NullStringHolder实例,这样更精简,因为它实际上没有保存数据,只是硬核在get()中返回null。如果您碰巧期望大量的空值作为有效响应(这可能是有问题的),那只会产生影响。

希望这有帮助!