我的后端 API 名称是什么?它在哪里?从 Android Studio 客户端调用 Google 云端点后端 API

What is my backend API name? Where is it? Calling Google Cloud endpoint backend API from Android Studio Client

我想使用 google 云端点 v2 连接到 App Engine(最终 google 云 sql(不是 firebase,因为我将进行复杂的查询) ) 在我的 android 工作室 (v3.3) 项目中。

google 云 SDK,OpenAPI,端点配置正在运行(它可以通过 windows PowerShell 接收回显 "hello world")并且我构建了客户端库按照本教程进行操作:https://cloud.google.com/endpoints/docs/frameworks/java/gen_clients

我已将我的客户端库导入到 Android Studio 项目文件 Libs 中,目前正在按照本教程从 Android Studio 客户端调用后端 APIs: https://cloud.google.com/endpoints/docs/frameworks/java/calling-from-android

编辑 gradle 文件后,建议将下面代码中的 "Tictactoe" 替换为您的后端名称 API

Tictactoe.Builder builder = new Tictactoe.Builder(
    AndroidHttp.newCompatibleTransport(), new GsonFactory(), null);
service = builder.build();

我花了 8 个小时试图弄清楚那会是什么。我在导入的库中找不到任何可用的文件。我试过单独使用我的 Google 云项目 ID 或后跟 .appspot.com 但没有任何效果。

我假设它一定在我的项目文件中的某个地方,我只需要知道它在哪里。而且不知道它叫什么让搜索变得棘手。

注意:Google 云站点建议在 Whosebug

上提出技术问题

这个名称来自几个 @Api 注释,这些注释是在配置端点 API 时设置的。听起来您可能是从 appengine-java8/endpoints-v2-backend 示例开始的,该示例具有以下声明:

@Api(
    name = "echo",
    version = "v1",
    namespace =
    @ApiNamespace(
        ownerDomain = "echo.example.com",
        ownerName = "echo.example.com",
        packagePath = ""
    ),
...

您可以在 Echo.java 中查看完整定义。

这里需要注意的重要事项是 name 字段和 namespace 中的 ownerDomain。这两个一起用于生成代码所属的 Java 包,但是 ownerDomain 路径的段是相反的(这是 Java 包中的标准,它表示层次结构与普通 DNS 段相反),因此 Java 包最终成为 com.example.echo.echo。 Java class 只是以 @Api.name 字段命名(大写),所以 class 名称只是 Echo.

所以,您正在寻找的完全合格的 Java class 是:

com.example.echo.echo.Echo

或者,对于您的确切代码片段:

com.example.echo.echo.Echo.Builder

这可能会造成混淆,因为此示例多次使用 "echo" 一词,因此很难确定每个人 echo 的来源,但这是另一个示例:

假设您将 @Api.name 设置为 myApiName,然后将 @Api.namespace.ownerDomain 设置为 mycompany.com。您将从生成的客户端库中使用的完全限定 Java class 是:

com.mycompany.myApiName.MyApiName

但是,我不建议您尝试根据这些规则手动找出 Java 包和 class 名称是什么。更简单的方法是查看 Endpoints 生成的客户端库。

当您 运行 gradle endpointsClientLibs 时,该命令将其生成的文件的位置输出为 .zip 文件。您所要做的就是解压缩此文件并浏览其中所有生成的代码,以轻松查看 Java 包结构的外观,甚至是 Endpoints 为您生成的确切 class 定义。

如果您在 IDE 中找不到这些 class,我想知道您是否不小心错过了 Generating a client library 说明中的步骤 4-7:

4) Unzip the file using the unzip utility, or use another ZIP-compatible unarchiving utility:

unzip ./echo-v1-java.zip

5) Change directory: cd echo.

6) Build the client library:

gradle build

The output is in the `build/libs` directory. The exact filename depends on the version of the Java client. It is something like echo-v1-1.23.0-SNAPSHOT.jar.

7) Add the client library JAR to your Java or Android app.