1

Ich bin völlig neu in der gesamten Google Cloud Endpoint/Google App Engine-Welt. Wenn Sie das Beispiel von Hello World durchgelesen haben, das Google anbietet (und Sie wahrscheinlich haben), erinnern Sie sich vielleicht daran, dass es 2 Klassen gibt, die automatisch für Sie generiert werden: MyBean und MyEndpoint. Was ist die Essenz des "Freilegens" einer API, insbesondere in Google Cloud Endpoint?

Dies sind etwa so:

/** 
* 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; 
    } 
} 

Und

/** 
* 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; 
    } 

} 

Nun, ich den Code in index.html untersucht (die auf den Einsatz des Backend geöffnet wird). Ich fand das folgende Gespräch im javascript:

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

Jetzt kann ich sehen, dass MyApi ist der Name durch Annotation und sayHi() ist das entsprechende Verfahren, Was ich nicht verstehe, ist das Konzept eine API des Aussetzens und Annotation hilft dabei. Es gibt keine Informationen zum Aussetzen von APIs.

Könnte mir jemand helfen, dies zu verstehen?

Antwort

1

Ich glaube, Ihre Frage kann in drei Teile unterteilt werden:

1/Was eine API aussetzt? Im Grunde bieten Sie einen Zugriff auf Ihre Geschäftslogik über eine Schnittstelle (die API) mit vollständiger Kontrolle darüber, was Sie anzeigen möchten oder nicht. Diese Stapelaustauschantwort ist eine großartige Erklärung: https://softwareengineering.stackexchange.com/questions/203844/what-does-it-mean-to-expose-something

2/Was sind diese Anmerkungen in der Klasse der automatisch generierten Endpunkte? Wenn ich es so zusammenfassen kann, Google Endpoint ist ein "Framework", die "Standard" APIs basierend auf Ihren Java-Beans generiert. Standardmäßig erhalten Sie CRUD-Operationen in der API, aber Sie können den Endpunkt ändern und/oder anreichern, um komplexere Geschäftslogik anzubieten. Die Endpoints-Klassen, die generiert werden, enthalten spezielle Annotationen, die vom Framework verwendet werden (insbesondere beim Generieren eines entsprechenden Servlets) und definieren den URI, den Sie aufrufen, um mit den Methoden der APIs zu interagieren. Siehe https://cloud.google.com/appengine/docs/java/endpoints/

3/Was ist dieser Aufruf von gapi.client? gapi steht für Google API Client Library. Es ist die Bibliothek, die von Google angeboten wird, um mit Endpoints von einem Webbrowser aus zu interagieren. Siehe https://developers.google.com/api-client-library/javascript/ Sie können auch andere Methoden zum Aufrufen der Endpunkt-APIs verwenden, z. B. jquery Ajax-Methoden (http://api.jquery.com/jquery.ajax/), da Endpoints dem REST-Architekturstil folgen. Beachten Sie, dass Sie Ihre Endpunkte von anderen "Clients" aufrufen können als von einem Webbrowser, z. eine Android- oder iOS-App. In diesen Fällen würden Sie nicht die Google API-Clientbibliothek, sondern einige andere Bibliotheken verwenden.

Ich hoffe, dies verdeutlicht ein wenig. Zögern Sie nicht, nach mehr Details zu fragen.

+0

Danke für die Antwort und Referenz Links. Wie ich verstanden habe, ist der Schlüssel zum Verständnis dieses Systems die Identifizierung der Parteien. Wenn ich also meine Bibliotheken über eine Schnittstelle zugänglich machen möchte, kann dies über die bereitgestellten Anmerkungen geschehen (erleichtert durch Google). Aber wenn ich unter Android entwickle, möchte ich nur die APIs von Google aufrufen, um Anfragen an meine App zu bearbeiten. Mein Backend-Modul würde mit ihnen umgehen und würde nur die Servlets haben, um sie zu behandeln. Außerdem wird das Back-End-Modul auf dem Server bereitgestellt. Bei diesen Interaktionen konnte ich den Code nicht verfügbar machen. contd ... –

+0

Also, ich bin gut ohne Belichtung richtig? Und das einzige Szenario, in dem ich die Exposition benötigen könnte, ist, wenn der Server eine Anfrage an meinen Code senden möchte (habe noch kein solches Szenario in Erwägung gezogen). –

+0

Ich bin nicht 100% sicher, Ihre Bedürfnisse zu verstehen. Wenn Ihr Ziel darin besteht, dass Ihre Android-App mit Ihrem Back-End interagiert, z. Daten in den Cloud Datastore speichern, Cloud Endpoints ist in der Tat der Weg zu gehen. Mit Ihren Worten würde ich sagen, dass Sie die Google-APIs für die Bearbeitung von Anfragen aus meiner App aufrufen sollten. Ich würde vorschlagen, dass Sie sich diese sehr guten Tutorials über Endpoints und Android ansehen: https://rominirani.com/grade-tutorial-part-8-gra-dle-app-engine-endpoints-android-studio-6584358b29fd#.bkyd868z9. –

Verwandte Themen