1

我對整個Google Cloud Endpoint/Google App Engine世界都是全新的。如果您已經瀏覽了Google提供的Hello World示例(可能有),那麼您可能會記得自動爲您生成了2個類:MyBeanMyEndpoint特別是在Google Cloud Endpoint中「暴露」API的本質是什麼?

這些是這樣的:

/** 
* The object model for the data we are sending through endpoints 
*/ 
public class MyBean { 

    private String myData; 

    public String getData() { 
     return myData; 
    } 

    public void setData(String data) { 
     myData = data; 
    } 
} 

而且,

/** 
* An endpoint class we are exposing 
*/ 
@Api(
     name = "myApi", 
     version = "v1", 
     namespace = @ApiNamespace(
       ownerDomain = "backend.myapplication.DJ.example.com", 
       ownerName = "backend.myapplication.DJ.example.com", 
       packagePath = "" 
     ) 
) 
public class MyEndpoint { 

    /** 
    * A simple endpoint method that takes a name and says Hi back 
    */ 
    @ApiMethod(name = "sayHi") 
    public MyBean sayHi(@Named("name") String name) { 
     MyBean response = new MyBean(); 
     response.setData("Hi, " + name); 

     return response; 
    } 

} 

現在,我檢查了代碼中的index.html(其中大幹快上部署後端打開)。我發現在JavaScript以下電話:

gapi.client.myApi.sayHi({'name': name}).execute(

現在,我可以看到myApi通過注​​釋和的sayHi()是對應的方法名稱,我不明白的是暴露了一個API的概念並且註釋幫助了這一點。沒有關於公開API的信息。

任何人都可以幫助我理解這一點嗎?

回答

1

我認爲你的問題可以分爲3個部分可分爲:

1 /什麼是暴露的API? 基本上,您提供了通過接口(API)訪問您的業務邏輯,並完全控制您要顯示或不顯示的內容。 Stack Exchange的答案是一個很好的解釋:https://softwareengineering.stackexchange.com/questions/203844/what-does-it-mean-to-expose-something

2 /自動生成的端點類中的這些註釋是什麼? 如果我可以這樣總結,Google端點是一個「框架」,它可以根據您的java bean生成「默認」API。默認情況下,您會在API中獲得CRUD操作,但您可以修改和/或豐富端點以提供更復雜的業務邏輯。生成的Endpoints類包括框架使用的特定註釋(特別是在生成相應的servlet時),並定義您將調用的與API的方法交互的URI。請參閱https://cloud.google.com/appengine/docs/java/endpoints/

3 /這是什麼gapi.client調用? gapi代表Google API客戶端庫。 Google提供的圖書館可以從網絡瀏覽器與端點進行交互。請參閱https://developers.google.com/api-client-library/javascript/ 您可以使用其他方法來調用端點API,如jQuery的Ajax方法(http://api.jquery.com/jquery.ajax/),因爲端點遵循REST架構風格。請注意,您可以通過其他「客戶端」而不是網頁瀏覽器呼叫終端,例如Android或iOS應用程序。在這些情況下,您不會使用Google API客戶端庫,而是使用其他一些庫。

我希望這個澄清一下。不要猶豫,要求更多的細節。

+0

感謝您的回覆和參考鏈接。據我所知,理解這個系統的關鍵是確定各方。因此,如果我想通過界面公開我的圖書館,可以通過提供的註釋來完成(由Google推動)。但如果我在Android上開發,我只想調用Google的API來處理對我的應用程序的請求。我的後端模塊會處理它們,並且只有Servlet來處理它們。此外,後端模塊將部署在服務器上。在這些交互中,我找不到需要公開我的代碼。 contd ... –

+0

那麼,我很好去沒有曝光的權利?唯一可能需要暴露的場景是服務器想要向我的代碼發送請求(還沒有想到任何此類場景)。 –

+0

我不是100%肯定了解你的需求。如果您的目標是讓您的Android應用與您的後端進行互動,例如將數據存儲在雲端數據存儲中,雲端點確實是一條可行的路。通過使用你的話我會說,你應該「調用谷歌的API來處理來自我的應用程序的請求」。我建議你看看這些關於端點和Android的非常好的教程:https://rominirani.com/gradle-tutorial-part-8-gradle-app-engine-endpoints-android-studio-6584358b29fd#.bkyd868z9。 –

相關問題