【问题标题】:.api file with Google Cloud Endpoints - how do I customise带有 Google Cloud Endpoints 的 .api 文件 - 如何自定义
【发布时间】:2013-03-17 11:04:49
【问题描述】:

我对使用 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 网站的“生成客户端库”部分中 - 但这肯定不仅仅是生成客户端库,它还创建了必要的部署配置服务器端。我觉得这很混乱。

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

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

    我在做这件事时遇到了麻烦,我相信你必须遵守几条规则,即:

    • 你的api和方法名不能使用“_”,所以@Api(name="my_api")是错误的@Api(name="myApi") strong> 是对的。
    • 您的 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 plugin 生成云端点库:

    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>
    

    说实话,没有插件我不知道怎么做......

    【讨论】:

    • 感谢@MikO - 我看到当创建自定义端点类时,.api 文件会在 Eclipse 中自动创建。但我使用的是 Intellij 和 GAE Maven 插件。也许我对 .sh 文件做错了 - 我会试验一下。
    • 注意:我只看到 Eclipse 插件文件夹中的 endpoints.sh 文件(我也安装了 Eclipse)。
    • 不客气@planetjones。至于 .api 文件,很抱歉我不太了解您的问题。该文件是第一次生成的,每次修改类并运行生成时都会更新。恐怕我不知道它在 eclipse 中是如何工作的......
    【解决方案2】:

    Google 在 appengine-maven-plugin 版本 1.7.7 中添加了对端点生成的支持。这意味着现在可以在不使用 Eclipse 插件的情况下创建端点。请参阅original issue ticket

    我随后有blogged 关于使用 Maven 插件生成和部署端点,这可能对入门很有用。

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 2014-01-19
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多