我运行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云端控制台。上传我的应用程序会产生相同的结果。
我错过了什么吗?我认为文档有点缺乏,它甚至没有解释生成的文件的用途。
我正在使用Google App Engine Java。
[1] https://developers.google.com/appengine/docs/java/endpoints/gen_clients
答案 0 :(得分:1)
要使端点正常工作,请按照Google GAE页面中所述的步骤进行操作
首先编写API后端代码。
注释您的API后端代码,因此可以从中生成类和客户端库。 (或者,使用Google Plugin for Eclipse,它会自动为您注释。)
使用endpoints.sh实用程序生成客户端库。 (或者,使用Google Plugin for Eclipse生成客户端库。)
- 醇>
在调用API后端时使用客户端库编写客户端应用程序。
但上述步骤错过了一些重要步骤,Google Plugins(Google Plugin for Eclipse)将自动为您生成。
在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>
您需要确保将 endpoints.sh 生成的文件(.api)复制到您的网络应用根文件夹中的 WEB-INF 文件夹中。
为了更好地理解,您可以调用 endpoints.sh 来查看所有可用选项,如下所示
Available commands: get-client-lib: Generates a client library usage: get-client-lib ... Options: --classpath=CLASSPATH Additional class path entries -cp CLASSPATH (default: ./war/WEB-INF/classes). --language=LANGUAGE The target output programming language -l LANGUAGE (java) (default: java). --output=OUTPUT_DIR The directory to store output files -o OUTPUT_DIR (default: ./). --war=WAR_PATH The path to a directory or .war with a WAR -w WAR_PATH directory layout (default: ./war). gen-api-config: Generates API configuration files from service classes usage: gen-api-config ... Options: --classpath=CLASSPATH Additional class path entries -cp CLASSPATH (default: ./war/WEB-INF/classes). --output=OUTPUT_DIR The directory to store output files -o OUTPUT_DIR (default: ./). --war=WAR_PATH The path to a directory or .war with a WAR -w WAR_PATH directory layout (default: ./war). gen-discovery-doc: Generates API Discovery document usage: gen-discovery-doc Options: --format=FORMAT The requested API protocol type (rest|rpc) -f FORMAT (default: rest). --output=OUTPUT_DIR The directory to store output files -o OUTPUT_DIR (default: ./). gen-client-lib: Generates a client library usage: gen-client-lib Options: --language=LANGUAGE The target output programming language -l LANGUAGE (java) (default: java). --output=OUTPUT_DIR The directory to store output files -o OUTPUT_DIR (default: ./).
然后,您可以在资源管理器UI中查看服务,如下所示。
当您访问 http:// localhost:8080 / _ah / api / explorer 时,会先将其重定向到 developers.google.com 。但内容来自localhost。
您始终可以依赖普通的Google APE本地开发服务器。例如,IntelliJ Google APE插件启动Google APE本地服务器也可以支持“_ah / api / explorer”访问
答案 1 :(得分:0)
正如Dan Holevoet在评论中提到的,脚本需要从war
运行。至于我的情况,我只需要将文件复制到该目录中。