java - 使用 Google 云端点进行数据传输优化

标签 java javascript google-app-engine serialization google-cloud-endpoints

我正在发送 List<Item>通过谷歌云端点从谷歌应用引擎(java)到javascript。

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

}

在 javascript 中,我收到每个项目具有以下结构的数据:

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

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

enter image description here

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

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

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

但它有点复杂和“丑陋”,因为例如 Item 的一些属性对象是结构化对象。

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

有没有办法设置端点只发送“必要”的数据?

最佳答案

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

参见this page有关如何使用变压器的详细信息。基本上,你想要一个 class ItemTransformer implements Transformer<Item, List<String>>并附有相关注释。

关于java - 使用 Google 云端点进行数据传输优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28322902/

相关文章:

java - 如何并行更新 400,000 个 GAE 数据存储实体?

java - 使用嵌套异常是一种好习惯吗?

java - IntelliJ 没有看到我的 OpenGL 版本

java - 升级到 Wildfly 18 后,EntityManager 已停止运行更新语句

javascript - WebView本地Html和Canvas?

javascript - 其他人如何在实时页面的 DOM 中搜索元素?

python - Google App Engine - 在模板 HTML 中打印 GQL ID 字段

java - 将 sum 函数与 Google App Engine 数据存储结合使用

java - Spring + Thymeleaf 绑定(bind)形成 NullpointerException

javascript - 这个函数有名字吗