云端点Java中的管理和客户端API

时间:2019-01-15 04:02:49

标签: java frameworks google-cloud-endpoints-v2

我将为一本书创建一个API,用户可以从中获取有关这本书的数据。 此API有两个部分,一个是管理端,另一个是客户端。

只有管理员可以添加,更新或删除数据。
用户只能访问(读取)数据。

我正在为此使用Google Cloud Endpoints。但是在云端点中,所有方法对用户都是可见的,我知道我可以限制某些方法,但即使受限的方法也会在API资源管理器和客户端库中显示。我不想显示这些 仅API Explorer中的方法管理员可以在API Explorer和库中看到这些方法。

我该怎么做?我可以创建两个不同的API,一个用于管理,第二个用于客户端吗?创建两个不同的项目重复了大部分代码。

对于这种情况,是否有任何设计模式?

任何建议我需要做什么。

1 个答案:

答案 0 :(得分:0)

使用Cloud Endpoints,将在整体API级别而不是按方法授予对有关API的查看详细信息的访问权限。因此,您不能拥有仅对某些人可见的特定方法。

但是,您可以在同一个GCP项目中拥有多个Endpoints API(使用gcloud endpoints services deploy,并且API规范具有不同的主机名)。

也就是说,如果您使用的是Endpoints Frameworks(来自您问题的标记),则要使用一个棘手的限制:一个GCP项目最多可以有一个App Engine应用程序([your-project-id] .appspot.com)。那么,该怎么办?

如果您愿意将管理API托管在其他子域中,则可以使用App Engine“服务”(以前称为“模块”)。这样一来,您就可以在[modulename]-dot-[your-project-id].appspot.com之类的域中部署应用程序。您可以在每个主机名上上传不同的Endpoints API规范。

这应该使您可以执行以下操作:

  • 管理员API:[admin]-dot-[your-project-id].appspot.com
  • 用户API:[user]-dot-[your-project-id].appspot.com或仅[your-project-id].appspot.com"default"服务)