当前位置: 首页 > 知识库问答 >
问题:

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

朱欣荣
2023-03-14

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

google cloud SDK、OpenAPI、Endpoints配置正在运行(它可以通过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个小时试图弄清楚那会是什么。我在导入的库中找不到任何有效的文件。我已经尝试过单独使用我的谷歌云项目id,或者紧跟其后。appspot。但是什么都不管用。

我想它一定在我的项目文件里,我只想知道在哪里。不知道它叫什么会让搜索变得棘手。

注:谷歌云网站建议询问有关stackoverflow的技术问题

共有1个答案

洪鸿博
2023-03-14

此名称来自在配置endpointApi时设置的几个@Api注释。听起来您可能是从appengine-java8/endpoints-v2-backend示例开始的,它有以下声明

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

您可以在E中看到完整的定义cho.java.

这里需要注意的重要事情既是name字段,也是来自namespaceownerDomain。这两者一起用于生成代码将属于的Java包,但ownerDomain路径的段是相反的(这在Java包中是标准的,它以与正常DNS段相反的方式表示层次结构),因此Java包最终是com.example.echo.echo。Java类只是以@Api.name字段(大写)命名,因此类名只是Echo

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

com.example.echo.echo.Echo

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

com.example.echo.echo.Echo.Builder

这可能会令人困惑,因为本例多次使用“echo”一词,很难确定每个echo的来源,但下面是另一个示例:

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

com.mycompany.myApiName.MyApiName

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

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

如果您在IDE中找不到这些类,我想知道您是否意外错过了生成客户端库说明中的步骤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.

 类似资料:
  • 对于通过流式API(在音频流上执行流式语音识别)使用Google Cloud Speech API, 我们需要启用哪些endpoint/端口/白名单? 询问的原因是,我们正在受限制的设备上运行此操作,只需要打开所需的出站endpoint/端口。

  • 我正在与谷歌云平台合作。学习和尝试一些东西,比如Bigquery和Google云存储。 我感到困惑的是,所有这些东西都有两个官方API:gcloud API和Google API Python客户端。在google Cloud的“入门”教程中,推荐的API是,gcloud API的文档似乎不是很详细。 简而言之,要以编程方式访问Google云平台, null

  • 问题内容: 据我所知,对于如果不用作Web服务器的客户端脚本,我们没有任何解释。我已经找到了客户端文件的完整目录,但是我需要它们的组合版本(例如,使用node.js网站服务器时就可以使用)。有任何想法吗? 问题答案: socket.io.js是您要放入客户端html中的内容。就像是: 我的脚本位于: 将该文件复制到您希望服务器提供该文件的位置。

  • 后端 这是来自领域设置

  • 我有一个应用程序与Spring-Boot一起提供服务。我已经为“API/...”添加了一些控制器--这些调用可以执行Angular Frontend需要的不同操作。我如何保护这些URL以便只有我的前端可以访问examlpe.com/api/...而不是每个用户?我不希望任何人能够访问examlpe.com/api/..但是他们应该能够访问example.com。 url example.com/a