我将为一本书创建一个API,用户可以从中获取有关这本书的数据。 此API有两个部分,一个是管理端,另一个是客户端。
只有管理员可以添加,更新或删除数据。
用户只能访问(读取)数据。
我正在为此使用Google Cloud Endpoints。但是在云端点中,所有方法对用户都是可见的,我知道我可以限制某些方法,但即使受限的方法也会在API资源管理器和客户端库中显示。我不想显示这些 仅API Explorer中的方法管理员可以在API Explorer和库中看到这些方法。
我该怎么做?我可以创建两个不同的API,一个用于管理,第二个用于客户端吗?创建两个不同的项目重复了大部分代码。
对于这种情况,是否有任何设计模式?
任何建议我需要做什么。
答案 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规范。
这应该使您可以执行以下操作:
[admin]-dot-[your-project-id].appspot.com
[user]-dot-[your-project-id].appspot.com
或仅[your-project-id].appspot.com
("default"
服务)