Google 云端点的数据传输优化

Data transport optimization with Google cloud endpoints

我正在通过 google 云端点从 google 应用引擎 (java) 向 java 脚本发送一个 List<Item>

Item:

public class Item implements Serializable { 

    private String item1;   
    private Integer item2;
    private String item3;   
    //(...) item (4-39)
    private String item40;  

   //Constructor, Getters, setters, +functions

}

在 java 脚本中,我收到的每个项目的数据结构如下:

{item1:"v1",item2:"v2"}

同样在每个对象的末尾,我收到了很多我不明白为什么要发送的数据。

'?'数据不是我定义的函数。我认为它是可序列化对象函数,但我不明白为什么发送。

我需要以这种格式发送数据:{"v1","v2"} 而不是 {item1:"v1",item2:"v2", a lot of functions} 以减少数据的大小。

我想解决发送java的List<String>中的数据的问题。

但是有点复杂"ugly"因为例如Item对象的一些属性是结构化对象。

是否有google云端点中描述的方法以这种方式发送数据?

有什么方法可以设置端点只发送 "necessary" 数据吗?

首先,我认为这不是个好主意,但您可以使用转换器来控制对象的序列化方式。但是,如果您使用生成的客户端库,您将丢失所有信息——它们只会将事物视为字符串列表。端点应该自动为你 gzip 东西,这应该有助于节省大量带宽。您应该进行测量,比较两个完整的 5000 列表并查看到底节省了多少带宽。请记住,端点也不会传输空属性,因此如果许多属性未全部设置,您会自动节省带宽。

有关如何使用转换器的详细信息,请参阅 this page。基本上,您需要带有相关注释的 class ItemTransformer implements Transformer<Item, List<String>>