1

我运行endpoints.sh get-client-lib com.my.app.FooService并成功生成了 Google Cloud Endpoints[1] 的文件(2 个.discovery文件、1 个.api文件和 1 个.zip文件)。

该脚本不会向我的war文件夹添加任何内容,因此我假设服务器端已经由配置的魔法web.xml@Api注释(a'la Spring Framework)处理。

http://localhost:8080/_ah/api/explorer将我重定向到一个空白的谷歌云控制台。上传我的应用程序会产生相同的结果。

我错过了什么吗?我认为文档有点缺乏,它甚至没有解释生成的文件的用途。

我正在使用 Google App Engine Java。

[1] https://developers.google.com/appengine/docs/java/endpoints/gen_clients

4

2 回答 2

1

要使端点正常工作,需要按照 Google GAE 页面中所述的步骤进行操作

  1. 首先编写您的 API 后端代码。

  2. 注释您的 API 后端代码,以便从中生成类和客户端库。(或者,使用 Google Plugin for Eclipse,它会为您自动注释。)

  3. 使用 endpoints.sh 实用程序生成客户端库。(或者,使用 Google Plugin for Eclipse 生成客户端库。)

  4. 在调用 API 后端时使用客户端库编写您的客户端应用程序。

但是上面的步骤漏掉了一些重要的步骤,Google Plugins(Google Plugin for Eclipse)会自动为你生成。

  1. 在 web.xml 中配置 servlet。(将your-full-class-name替换为您自己的类名)

    <servlet>
        <servlet-name>com.google.api.server.spi.SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>your-full-class-name</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>com.google.api.server.spi.SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>
    
  2. 您需要确保将endpoints.sh生成的文件 (.api)复制到您的 Web 应用程序根文件夹中的WEB-INF文件夹中。

为了更好地理解,您可以调用endpoints.sh来查看所有可用选项,如下所示

可用命令:

get-client-lib:生成客户端库
用法:get-client-lib ...

选项:
 --classpath=CLASSPATH 附加的类路径条目
  -cp CLASSPATH(默认值:./war/WEB-INF/classes)。
 --language=LANGUAGE 目标输出编程语言
  -l 语言(java)(默认值:java)。
 --output=OUTPUT_DIR 存放输出文件的目录
  -o OUTPUT_DIR(默认值:./)。
 --war=WAR_PATH 目录的路径或带有 WAR 的 .war
  -w WAR_PATH 目录布局(默认:./war)。

gen-api-config:从服务类生成 API 配置文件
用法:gen-api-config ...

选项:
 --classpath=CLASSPATH 附加的类路径条目
  -cp CLASSPATH(默认值:./war/WEB-INF/classes)。
 --output=OUTPUT_DIR 存放输出文件的目录
  -o OUTPUT_DIR(默认值:./)。
 --war=WAR_PATH 目录的路径或带有 WAR 的 .war
  -w WAR_PATH 目录布局(默认:./war)。

gen-discovery-doc:生成 API 发现文档
用法:gen-discovery-doc  

选项:
 --format=FORMAT 请求的 API 协议类型 (rest|rpc)
  -f 格式(默认值:休息)。
 --output=OUTPUT_DIR 存放输出文件的目录
  -o OUTPUT_DIR(默认值:./)。

gen-client-lib:生成客户端库
用法:gen-client-lib  

选项:
 --language=LANGUAGE 目标输出编程语言
  -l 语言(java)(默认值:java)。
 --output=OUTPUT_DIR 存放输出文件的目录
  -o OUTPUT_DIR(默认值:./)。

然后,您可以在资源管理器 UI 中查看服务,如下所示。

  • 当你访问http://localhost:8080/_ah/api/explorer时,它会首先被重定向到developers.google.com。但内容来自本地主机。

  • 您始终可以依靠您的普通 Google APE 本地开发服务器。例如 IntelliJ Google APE 插件启动 Google APE 本地服务器也可以支持“_ah/api/explorer”访问 端点探索用户界面

于 2013-08-05T00:41:56.910 回答
0

正如 Dan Holevoet 在评论中提到的,脚本需要从war. 至于我的情况,我只需要将文件复制到该目录中。

于 2013-06-10T13:47:01.127 回答