Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 Google云端点处理程序的API Explorer字段?_Java_Google App Engine_Google Cloud Endpoints - Fatal编程技术网

我如何访问;“字段”;Java Google云端点处理程序的API Explorer字段?

我如何访问;“字段”;Java Google云端点处理程序的API Explorer字段?,java,google-app-engine,google-cloud-endpoints,Java,Google App Engine,Google Cloud Endpoints,我希望允许端点的客户端屏蔽web服务将返回的字段。我注意到在GoogleAPI浏览器中有一个“字段”字段,看起来它是用于此功能的。但是,我找不到任何关于如何从Java端点处理程序方法访问“字段”的文档,以便实现客户机的愿望并返回减少的数据集。这是受支持的功能吗?如果是这样,我如何利用它?在云端点生成的客户端代码中,您会发现对于您公开的每个方法,都有一个可以设置的设置字段方法。使用这个参数,它应该只返回特定的字段。因为没有找到关于这个字段参数的文档,我必须从自己的实验中说出来 据我所知,Googl

我希望允许端点的客户端屏蔽web服务将返回的字段。我注意到在GoogleAPI浏览器中有一个“字段”字段,看起来它是用于此功能的。但是,我找不到任何关于如何从Java端点处理程序方法访问“字段”的文档,以便实现客户机的愿望并返回减少的数据集。这是受支持的功能吗?如果是这样,我如何利用它?

在云端点生成的客户端代码中,您会发现对于您公开的每个方法,都有一个可以设置的
设置字段
方法。使用这个参数,它应该只返回特定的字段。

因为没有找到关于这个字段参数的文档,我必须从自己的实验中说出来

据我所知,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的覆盖。