Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌端点_Java_Python_Google App Engine_Google Cloud Endpoints - Fatal编程技术网

Java 谷歌端点

Java 谷歌端点,java,python,google-app-engine,google-cloud-endpoints,Java,Python,Google App Engine,Google Cloud Endpoints,我有一个关于在Python中从端点模型方法检索查询的特定问题 # DataPointModel GET LIST api method @DataPointModel.query_method(query_fields=('user_key', ), # Fields from which the method is querying from path='datapoint/list/{user_key}',

我有一个关于在Python中从端点模型方法检索查询的特定问题

    # DataPointModel GET LIST api method
    @DataPointModel.query_method(query_fields=('user_key', ), # Fields from which the   method is querying from
                                 path='datapoint/list/{user_key}', # REST api parameters
                                 name='datapoint.list_get_by_user_key') # Metod name
    def datapoint_list_get_by_user_key(self, query):
        '''
        Returns the DataPointModel object model list by its user KEY
        '''
        return query
我有Android(Java)的客户端。 问题是,它返回的DataPointModelCollection不包含 列表(dataPointsCollection.getDatapointList()此为空)

DataPointModelCollection包含“项”,因此它包含正确的对象, 如果打印到字符串()并显示为JSON。然而,问题仍然存在,因为 我想将检索到的DataPointModelCollection映射为Java对象DataPointModel的列表

我真的很想听到一些关于这方面的见解。困扰我的是,我可以上传一个DataPointModelCollection,在那里我设置了一个列表。。。但它只是
反过来也不行吗?

编辑2:对不起,我还是不明白你在问什么。这是实际的答案-只需阅读其他部分的兴趣

解释如何提取客户端Android“-Collection”生成类中的实体。您需要调用
.getItems()
,而不是像“getDatapointList()”这样的命名函数。在“关于支持的返回类型”下:

可序列化类型列表实际上,端点生成的是一个新的“集合”JSON类,与其他所有客户端类似 模范班。例如,如果模型中有一个对象 由Lobster.java表示,您希望返回一个列表, 该库将有一个LobsterCollection.java。您可以检索 通过调用getItems()在客户端中列出龙虾


编辑:非常抱歉,我承认我浏览了你的问题,我的大脑分析了java。首先回答:

PYTHON

您应该熟悉对象及其属性。不能简单地返回python对象。消息对象包含多个字段值,用于将对象转换为JSON对象,以便通过API HTTP请求进行传输

要从端点函数返回包含多个消息对象列表(例如,每个消息对象包装一个StringField和一个DateTimeField)的消息对象,定义此返回类型的消息类中应包含一个,允许您放置消息(例如我们创建的包含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

您需要实现一个包含集合的包装器类

有关参数和返回类型的详细信息,请参阅


有关解释如何将多个实体类型添加为参数的有趣答案,请参见(简短的故事:无法执行实体类型的多个参数,无法执行实体类型的集合,需要使用包含两个实体的包装器实体)

我已经弄明白了-DataPointModelCollection应该有一个不同的名称,因为端点在某种程度上为每个模型集合都有一个默认的保留名称。因此,我只是将模型的名称更改为DataPointModelInsertCollection,它起到了作用。我试图避免使用message类,因为endpoints_proto_datastore lib启用模型方法查询