【发布时间】: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注释时,您是否重新运行了update和endpoints_get_client_libmaven 目标?注释将导致该方法从通过 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