Я разрабатываю API конечных точек google, поскольку у меня есть только ответ класса POJO от метода API. Как я могу получить String или Integer, Float, логический ответ из метода API конечной точки google?
Лучший подход - создать простые классы контейнеров с неизменяемыми значениями (слишком плохо, что у нас нет поддержки 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 в случае пустых входов, который является более компактным, поскольку на самом деле не нужно хранить данные, просто хардкор, чтобы вернуть null в get(). Было бы только иметь значение, если бы вы ожидали тонны нулей в качестве действительного ответа (что, вероятно, вызывает сомнения).
Надеюсь это поможет!
В методах Endpoint тип возвращаемого значения не может быть простым типом, например String или int. Возвращаемое значение должно быть POJO, массивом или коллекцией.
Если вы хотите какой-то обходной путь для String, посмотрите на этот поток: Почему не поддерживают Google Cloud Endpoints простые типы возврата объектов?