【问题标题】:Cloud endpoints methods visibility云端点方法可见性
【发布时间】:2015-05-11 20:42:33
【问题描述】:

我正在使用Google Cloud Endpoints 开发一个Android 应用程序,我已经阅读了很多关于它的文档和教程,但仍然缺少一个信息:如何选择Android 客户端可以看到哪些后端方法? 假设我有一个 FriendshipEndpoint,FriendshipEndpoint 有这个方法:

@ApiMethod(name = "listFriendship", path = "listFriendship")
public CollectionResponse<Friendship> listFriendship(
        @Nullable @Named("cursor") String cursorString,
        @Nullable @Named("limit") Integer limit)

EDIT FriendshipEndpoint 使用@Api 注释进行注释

此方法应仅在后端可见(Android 客户端不可见)。

我已尝试删除 @ApiMethod 注释 -> 不起作用,该方法在我浏览器的 api 资源管理器中仍然可见。
将访问修饰符设置为私有对我来说不是解决方案,因为我想从其他端点调用此方法。
删除访问修饰符对我来说也不是解决方案,因为我需要这个方法在其他包(测试包)中可见。

这个问题有解决办法吗?

【问题讨论】:

  • 当您删除@ApiMethod 注释时,您是否重新运行了updateendpoints_get_client_lib maven 目标?注释将导致该方法从通过 REST 和客户端库公开的云 API 中排除。
  • @LarrySchiefer 我没有重新生成云端点库,但是在没有@ApiMethod 注释的情况下重新运行项目后,该方法仍然“对世界可见”,因此它也可以通过以下方式调用安卓客户端。您所说的与“具有@Api 注释的类中的所有公共、非静态、非桥接方法都暴露在API 中,无论它们是否具有@ApiMethod 注释。” [1],不是吗?我的端点也用@Api 注释进行了注释。 (cloud.google.com/appengine/docs/java/endpoints/…)
  • 你是对的,我忘记了顶级 @Api 注释。我很抱歉造成混乱。

标签: java android google-app-engine google-cloud-endpoints


【解决方案1】:

很遗憾,目前不支持这种情况。最好的解决方案是将方法移至帮助类并在所有端点类之间共享。

【讨论】:

  • 感谢您的回答,但是否有一些参考可以证实您的回答,或者是否暗示“没有信息,它解释了如何处理云端点方法的可见性”?
  • Here: "使用 @Api 注解的类的所有公共、非静态、非桥接方法都将在公共 API 中公开。"另外,我是 Cloud Endpoints 的一名工程师。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多