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

标签 java android android-studio google-cloud-endpoints-v2

我想在我的 android studio (v3.3) 项目中使用 Google Cloud Endpoint v2 连接到 App Engine(最终连接到 Google Cloud sql(不是 firebase,因为我将进行复杂的查询))。

Google Cloud SDK、OpenAPI、端点配置正在运行(它可以通过 Windows PowerShell 接收回声“hello world”),并且我按照本教程构建了客户端库:https://cloud.google.com/endpoints/docs/frameworks/java/gen_clients

我已将客户端库导入到 Android Studio 项目文件 Libs 中,目前正在按照本教程从 Android Studio 客户端调用后端 API: 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 Cloud 项目 ID 或后跟 .appspot.com,但没有任何效果。

我认为它一定在我的项目文件中的某个地方,我只需要知道在哪里。而且不知道它叫什么,搜索起来就很棘手。

注意:Google Cloud 网站建议在 stackoverflow 上询问技术问题

最佳答案

此名称来自配置 Endpoints 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 类只是以 @Api.name 字段(大写)命名,因此类名就是 Echo

因此,您正在寻找的完全限定的 Java 类是:

com.example.echo.echo.Echo

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

com.example.echo.echo.Echo.Builder

这可能会令人困惑,因为此示例多次使用“echo”一词,很难确定每个单独的 echo 来自何处,但这里是另一个示例:

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

com.mycompany.myApiName.MyApiName

但是,我不建议您尝试根据这些规则手动找出 Java 包和类名。更简单的事情就是查看 Endpoints 生成的客户端库。

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

如果您在 IDE 中找不到这些类,我想知道您是否可能不小心错过了 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.

关于java - 我的后端 API 名称是什么?它在哪里?从 Android Studio 客户端调用 Google Cloud 端点后端 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54568055/

相关文章:

Android-studio Unresolved 依赖 : android-maps-utils

java - 在字符串中的所有单词 "o", "google",...中找到字母数 "gooogle"的乘积

java - 当对 @Id 使用继承表生成器时,DataNucleus (JPA) 是否支持每个实体序列?

android-studio - 在Android Studio中重建项目时出错

java - LibGDX AssetManager 在模拟器上加载 .wav 文件,但在移动设备上不加载

javascript - 钛移动开发平台

java - ArrayList只添加一个元素

java - 将 EJB 注入(inject) RESTeasy Web 服务

java - 尝试在空对象引用上调用虚拟方法,Radio Group

Android:有没有办法以编程方式获取已定义字符串数组的名称值?