2016-05-11 10 views
1

Ich bin ziemlich neu in der Entwicklung mit Google App Engine und anderen Google-Diensten der Cloud-Plattform und ich würde gerne eine App mit verschiedenen Modulen erstellen (damit sie ihre haben können eigenen Lebenszyklus), die Endpunkte verwenden.Verwendung von Google Endpunkten in verschiedenen Modulen der gleichen App

Ich habe Probleme mit API-Pfaden, weil ich nicht weiß, wie Anfragen an das gute Modul weitergeleitet werden.

Mein Verzeichnisbaum ist wie folgt aus:

/myApp 
    /module1 
    __init__.py 
    main.py 
    /module2 
    __init__.py 
    main.py 
    module1.yaml 
    module2.yaml 
    dispatch.yaml 

module1.yaml

application: myapp 
runtime: python27 
threadsafe: true 
module: module1 
version: 0 
api_version: 1 

handlers: 
# The endpoints handler must be mapped to /_ah/spi. 
# Apps send requests to /_ah/api, but the endpoints service handles mapping 
# those requests to /_ah/spi. 
- url: /_ah/spi/.* 
    script: module1.main.api 

libraries: 
- name: pycrypto 
    version: 2.6 
- name: endpoints 
    version: 1.0 

module2.yaml

application: myapp 
runtime: python27 
threadsafe: true 
module: module2 
version: 0 
api_version: 1 

handlers: 
# The endpoints handler must be mapped to /_ah/spi. 
# Apps send requests to /_ah/api, but the endpoints service handles mapping 
# those requests to /_ah/spi. 
- url: /_ah/spi/.* 
    script: module2.main.api 

libraries: 
- name: pycrypto 
    version: 2.6 
- name: endpoints 
    version: 1.0 

dispatch.yaml

dispatch: 
    - url: "*/_ah/spi/*" 
    module: module1 

    - url: "*/_ah/spi/.*" 
    module: module2 

Also möchte ich meine Endpunkte mit dem Namen des entsprechenden Moduls irgendwo aufgerufen werden ('_ah/api/module1' oder 'module1/_ah/api'). Ich weiß nicht, was ich in die verschiedenen .yaml-Dateien schreiben soll. Ich weiß nicht einmal, ob das, was ich mache, richtig oder möglich ist.

Vielen Dank für Ihre Antworten.

Antwort

1

Sie können verschiedene Endpunkte auf verschiedenen Modulen hosten (jetzt Dienste genannt); die Art und Weise richtig um sie zu lösen ist wie folgt:

https://<service-name>-dot-<your-project-id>.appspot.com/_ah/api

Nun lassen Sie uns sagen, Sie haben-wie pro Ihre Beschreibung- module1 und module2, jeder Hosting verschiedene Endpunkte. Sie werden module1 APIs durch Anschlagen nennen:

https://module1-dot-<your-project-id>.appspot.com/_ah/api

Und in ähnlicher Weise module2 APIs:

https://module2-dot-<your-project-id>.appspot.com/_ah/api

Wenn Sie tiefer in wie diese URL-Schema graben wollen funktioniert (einschließlich Versionen, die ein anderer wichtiger Teil der Gleichung hier sind), lesen Sie Addressing microservices und den unmittelbar folgenden Abschnitt Using API versions

+0

Danke für Ihre Hilfe. Ich kämpfe jetzt mit einem neuen Problem, das hier beschrieben wird http://stackoverflow.com/questions/37183193/unable-to-get-google-endpoints-working-over-multiple-services, also setze ich dieses als aufgelöst – ValLeNain

+0

eigentlich ich ' Ich möchte immer noch sehen, wie die .yaml-Dateien aussehen. Vor allem, damit die App sowohl im Dev-Server als auch in der Cloud funktioniert. – ValLeNain