1

我对使用 Google Cloud 端点时创建的 .api 文件有点困惑。这似乎列出了所有方法和参数。它使用 Google Plugin for Eclipse 或在运行 endpoints.sh 时自动生成。.api 文件似乎是需要的,否则访问 API 时会返回 404。

如果我从 @Entity 类生成端点类,它会创建 .api 文件和 Endpoint.java 文件。我的问题是如果我想创建一个自定义 Endpoint.java 文件,例如不同的参数,那么我该怎么做呢?我应该更新我的代码然后手动修改 .api 文件,还是有办法只生成 .api 文件。

或者 Google App Engine 是否说您可以使用其基本方法生成端点,这就是所有可能的......?我原以为 .api 文件应该在部署时基于 web.xml 中的注册端点生成,或者更好的是在部署时扫描 @Api 注释并构建必要的配置。

此外,如果您没有在 Eclipse 中使用该插件(例如,您使用的是 Maven),则需要一些进一步的手动步骤,例如更新 web.xml。这在 App Engine 网站的“生成客户端库”部分中有记录 - 但这肯定不仅仅是生成客户端库,它还在创建必要的部署配置服务器端。我觉得这很令人困惑。

4

2 回答 2

4

您可以创建自定义端点。您只需按照文档中的说明添加注释。

我在这样做时遇到了麻烦,我认为您必须遵循几条规则,即:

  • 您的 api 和方法名称不能使用“_”,所以@Api(name="my_api")是错误的,@Api(name="myApi")是正确的。
  • 您的 api 方法不能返回简单类型,因此返回String是错误的,但返回MyString是正确的。您的方法也可以返回void

自定义端点的示例应如下所示:

import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;

@Api(name="myApi",
     path="my_api")
public class MyEndpoint {

    @ApiMethod (name="myMethod", 
                path="my_method",
                method="httpMethod = HttpMethod.POST")
    public MyCustomObject myMethod () {
        ...
    }
}

请注意,所有注释属性都是可选的。

然后,您只需通过以下方式从Eclipse 插件生成云端点库:

Right click on the project -> Google -> Generate Cloud Endpoint Client Libraries

您的 web.xml 会自动更新为:

<servlet>
  <servlet-name>SystemServiceServlet</servlet-name>
  <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
  <init-param>
    <param-name>services</param-name>
    <param-value>mypackage.MyEndpoint</param-value>
  </init-param>
</servlet>

老实说,我不知道没有插件可以做到这一点......

于 2013-03-17T15:11:47.253 回答
0

Google 在 appengine-maven-plugin 版本 1.7.7 中增加了对 Endpoint 生成的支持。这意味着现在可以在不使用 Eclipse 插件的情况下创建端点。请参阅原始问题单

我随后写了一篇关于使用 Maven 插件生成和部署端点的博客,这可能对入门很有用。

于 2013-05-19T10:44:29.333 回答