EDIT 2: Извините, я все еще не понимаю, о чем вы спрашиваете. Это фактический ответ - читайте только другие разделы для интереса.
This docs page объясняет, как вы можете извлекать объекты, которые находятся в созданном вами на базе Android классе «-Collection». Вам нужно позвонить .getItems()
, а не названную функцию типа getDatapointList(). В разделе «О Поддерживаемые типы возвращаемых значений»:
Списки сериализуемых типов Собственно, что Endpoints создает новый «Коллекция» JSON класс, который похож на любой другой клиент класса модели. Например, если у вас есть объект в вашей модели, то есть , представленный Lobster.java, и вы хотите вернуть List, , библиотека будет иметь LobsterCollection.java. Вы можете получить список Lobsters в своем клиенте, вызвав getItems().
EDIT: очень жаль, я признаю, что обезжиренное свой вопрос, и мой мозг разобранную Java. Python Ответ первый:
ПИТОН
Вы должны быть знакомы с Message объектов и их Fields. Вы не можете просто вернуть объект python. Объекты сообщения содержат несколько значений поля, которые используются для перевода объекта в объект JSON для передачи по HTTP-запросу API.
Чтобы вернуть объект сообщения из функции Endpoints, которая имеет список из нескольких объектов Message (каждый из которых включает, например, StringField и DateTimeField), класс Message, определяющий этот тип возврата, должен содержать MessageField , который позволяет размещать сообщения (такие как тип, который мы создали, который содержит StringField и DateTimeField) внутри других сообщений (наш тип возврата).Кроме того, на этом поле, вам нужно будет установить repeated=True
, как вы можете видеть в следующем фрагменте:
# REPEATED IN MESSAGE FIELD IN ORDER CLASS
class Lot(messages.Message):
price = messages.IntegerField(1, required=True)
quantity = messages.IntegerField(2, required=True)
class Order(messages.Message):
symbol = messages.StringField(1, required=True)
total_quantity = messages.IntegerField(2, required=True)
trade_type = messages.EnumField(TradeType, 3, required=True)
lots = messages.MessageField(Lot, 4, repeated=True) # REPEATED FIELD!
limit = messages.IntegerField(5)
JAVA
Вам необходимо реализовать класс-оболочку, которая содержит коллекция. See this question.
Прочтите here для получения дополнительной информации о параметрах и типах возвращаемых данных.
См. here за интересный ответ, в котором объясняется, как добавлять несколько типов объектов в качестве параметров (рассказ: не может выполнять несколько параметров типа сущности, не может выполнять Коллекции типа сущности, необходимо использовать объект-оболочку который содержит два объекта)
Я попытался избежать работы с классом сообщений, потому что endpoints_proto_datastore lib позволяет запрашивать модельные запросы модели http://endpoints-proto-datastore.appspot.com/ – box