我如何访问;“字段”;Java Google云端点处理程序的API Explorer字段?
我希望允许端点的客户端屏蔽web服务将返回的字段。我注意到在GoogleAPI浏览器中有一个“字段”字段,看起来它是用于此功能的。但是,我找不到任何关于如何从Java端点处理程序方法访问“字段”的文档,以便实现客户机的愿望并返回减少的数据集。这是受支持的功能吗?如果是这样,我如何利用它?在云端点生成的客户端代码中,您会发现对于您公开的每个方法,都有一个可以设置的我如何访问;“字段”;Java Google云端点处理程序的API Explorer字段?,java,google-app-engine,google-cloud-endpoints,Java,Google App Engine,Google Cloud Endpoints,我希望允许端点的客户端屏蔽web服务将返回的字段。我注意到在GoogleAPI浏览器中有一个“字段”字段,看起来它是用于此功能的。但是,我找不到任何关于如何从Java端点处理程序方法访问“字段”的文档,以便实现客户机的愿望并返回减少的数据集。这是受支持的功能吗?如果是这样,我如何利用它?在云端点生成的客户端代码中,您会发现对于您公开的每个方法,都有一个可以设置的设置字段方法。使用这个参数,它应该只返回特定的字段。因为没有找到关于这个字段参数的文档,我必须从自己的实验中说出来 据我所知,Googl
设置字段方法。使用这个参数,它应该只返回特定的字段。因为没有找到关于这个字段参数的文档,我必须从自己的实验中说出来
据我所知,Google Cloud Endpoints dispatcher会自动屏蔽该字段。API方法返回的对象由Jackson JSON解析器处理,该解析器只返回fields参数中给定的字段。对象的字段也应显示在字段编辑器中
下图是该字段编辑器在驱动器API中的显示方式。您自己的端点API应该生成类似的字段编辑器,Jackson应该只解析您选择的字段
注:
- Appengine devserver(localhost)也显示了字段编辑器,但在解析为JSON时,不知何故没有考虑所选字段
- 在某些情况下,“字段编辑器”允许您选择嵌套对象中的字段,在某些情况下不允许。我还没有发现这种行为背后的逻辑
- 如果将Hibernate(或其他类似的框架)用于延迟获取字段,您可能会遇到“无法初始化代理”错误。在这些情况下,您必须在端点中手动打开Hibernate会话。我发现的一个解决方案是继承
com.google.api.server.spi.SystemServiceServlet
类并在doPost
-方法中打开会话。该方法处理发送到端点的所有请求。您还应该使用@JsonIgnoreProperties({“hibernateLazyInitializer”,“handler”})注释您的实体,因为Jackson将无法解析这些字段
我很感谢您的尝试,但这并不能真正回答问题。您只描述了如何在客户端屏蔽字段。问题是如何在服务器端的请求处理程序中这样做。这是一个非常好的答案。非常感谢。我们在这个问题上已经设计很久了,但是考虑到未来的需求或重构,将考虑对DOPSTOST的覆盖。