2013-03-17 36 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

相關問題