2013-03-17 72 views
1

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

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

或者Google App Engine说你可以用它的基本方法生成Endpoint,这就是所有可能的......?我会认为.api文件应该在部署时根据web.xml中的注册端点生成,或者更好的是在部署时仅扫描@Api注释,然后构建必要的配置。

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

回答

0

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

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

4

您可以创建自定义端点。您只需添加documentation中所述的注释即可。

我很难这样做,我relised你必须遵循几个规则,即:

  • 您的API和方法的名称不能使用“_”,所以@Api(NAME =” my_api“)是错误的,并且@Api(name =”myApi“)是正确的。
  • 你的api方法一定不能返回简单类型,所以返回一个字符串是错误的,但是返回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> 

说实话,我不知道要做到这一点没有插件...

+0

感谢@MikO - 我看到何时创建自定义EndPoint类,.api文件是在Eclipse中自动创建的。但我使用的是Intellij,只是GAE Maven插件。也许我正在做的.sh文件错了 - 我会试验。 – planetjones 2013-03-17 15:26:57

+0

注意:我只能看到Eclipse插件文件夹中的endpoints.sh文件(我也安装了Eclipse)。 – planetjones 2013-03-17 15:28:27

+0

不客气@planetjones。至于.api文件,我很抱歉我不太了解你的问题。这个文件是第一次生成的,并且每次修改该类并运行生成时都会进行更新。恐怕我不知道它是如何从日食中消失的... – MikO 2013-03-17 15:44:14

相关问题