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つの部分に分けることができると思います:APIを公開している何

1 /? 基本的には、表示するかどうかを完全に制御しながら、インターフェイス(API)を介してビジネスロジックへのアクセスを提供しています。このスタックエクスチェンジの答えは素晴らしい説明です:https://softwareengineering.stackexchange.com/questions/203844/what-does-it-mean-to-expose-something

2 /自動生成されたエンドポイントクラスのこれらの注釈は何ですか? 私がそれを要約すると、GoogleのエンドポイントはあなたのJava Beanに基づいて「デフォルト」のAPIを生成する「フレームワーク」です。デフォルトでは、APIでCRUD操作が行われますが、より複雑なビジネスロジックを提供するためにエンドポイントを変更および/または強化することができます。生成されたEndpointsクラスには、フレームワークが使用する特定のアノテーション(特に対応するサーブレットの生成中)が含まれ、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/ jquery Ajaxメソッド(http://api.jquery.com/jquery.ajax/)のように、エンドポイントAPIはRESTアーキテクチャースタイルに従うので、他のメソッドを使用してエンドポイントAPIを呼び出すことができます。ウェブブラウザ以外の他の「クライアント」からエンドポイントを呼び出すことができます。 AndroidまたはiOSアプリこのような場合、Google APIクライアントライブラリ以外のライブラリを使用することになります。

これが少し明確になることを希望します。もっと詳しくお気軽にお尋ねください。

+0

応答と参照リンクをありがとう。私が理解しているように、このシステムを理解するための鍵は、当事者を特定することです。したがって、私がライブラリをインタフェースを通して公開したいのであれば、提供されたアノテーションを使ってライブラリを公開することができます(Googleが手助けします)。しかし、私がAndroid上で開発している場合は、私のアプリケーションへのリクエストを処理するためにGoogleのAPIを呼びたいと思うでしょう。私のバックエンドモジュールはそれらを処理し、サーブレットだけを処理します。また、バックエンドモジュールはサーバーにデプロイされます。これらのやりとりでは、自分のコードを公開する必要はありませんでした。 contd ... –

+0

だから、私は露出の権利なしに行くのが良いですか?そして、私が露出を必要とするかもしれない唯一のシナリオは、サーバーが自分のコードに要求を送信したいときです(このようなシナリオはまだ考えていません)。 –

+0

あなたのニーズを100%理解しているわけではありません。 Androidアプリをバックエンドとやりとりさせることが目標であれば、たとえばCloud Datastoreにデータを格納すると、Cloud Endpointsは確かに進歩しています。あなたの言葉を使って、あなたは「私のアプリケーションからのリクエストを処理するためにGoogleのAPIを呼び出す」べきだと言います。私はあなたがエンドポイントとAndroidについてのこれらの非常に良いチュートリアルを見ることをお勧めします:https://rominirani.com/gradle-tutorial-part-8-gradle-app-engine-endpoints-android-studio-6584358b29fd#.bkyd868z9。 –

関連する問題