Definieren Sie einen API-Server, der die von Ihnen erstellte(n) API(s) verwendet. Cloud Endpoints Frameworks für Python implementiert die standardmäßige Schnittstelle Web Server Gateway Interface (WSGI), um Anforderungen an die API für die Methoden im Code weiterzuleiten.
Wie bei jeder in App Engine ausgeführten Anwendung müssen Sie eine Datei namens app.yaml
erstellen, in der Sie die Einstellungen der App Engine-Anwendung konfigurieren. Wenn Sie den Webserver definieren möchten, müssen Sie Änderungen in der Datei app.yaml
vornehmen.
Einen Webserver definieren:
Erstellen Sie ein Python-Modul wie
main.py
und auf der obersten Ebene das Objektendpoints.api_server
:Der Code
api = endpoints.api_server([EchoApi])
erstellt eine WSGI-Anwendung, mit der API-Anfragen zu den Methoden in der KlasseEchoAPI
weitergeleitet werden.Sie können eine Liste von
remote.Service
-Objekten, die Sie beim Erstellen der API definiert haben, fürendpoints.api_server
bereitstellen. Wenn die API in mehreren Klassen implementiert ist, dann ist das Objektremote.Service
eine Sammlung von Klassen, wie unter Auf mehrere Klassen abgestimmte API erstellen beschrieben.Das Erstellen eines eigenen Moduls für das Objekt
endpoints.api_server
hängt davon ab, ob Sie eine einzelne API oder mehrere APIs erstellt haben.Wenn Sie mehrere APIs (mit mehreren untergeordneten Klassen
remote.Service
) erstellt haben und diese APIs in mehreren Dateien definiert sind, sollten Sie ein eigenes Modul für das Objektendpoints.api_server
erstellen, damit Sie alle Klassendateien importieren können.Wenn Sie eine einzelne API erstellt haben, können Sie den erforderlichen Code
endpoints.api_server
in das Modul einfügen, in dem Sie Ihre API definieren, da Sie keine anderen Klassen importieren müssen.
Ordnen Sie in der Datei
app.yaml
den gerade erstellen Webserver dem Cloud Endpoints-Standort so zu:Dabei ist
main
das Python-Modul, in dem Sie das Objektendpoints.api_server
definiert haben.
API über anderen Pfad bereitstellen
Optional: So stellen Sie die API über einen anderen Pfad (z. B. /api/
) bereit:
Ändern Sie den Decorator:
@endpoints.api(name='echo', version='v1', base_path='/api/')
Ändern Sie in der Datei
app.yaml
den Abschnitthandlers
:handlers: - url: /api/.* script: main.api
Logging mit Endpoint Frameworks for Python
In Endpoints Frameworks for Python wird das standardmäßige Python-Logging-Modul verwendet, um Informationen zum Status der Anwendung und zum Lebenszyklus der Anfrage zu protokollieren. Weitere Informationen zu App Engine-Logs und wie sie angezeigt werden, finden Sie in der Dokumentation zu App Engine unter Anwendungslogs lesen und schreiben.
Das Python-Logging-Modul bietet vordefinierte Logebenen. In aufsteigender Reihenfolge der Schweregrade lauten die Logebenen so:
Logebene | Beschreibung |
---|---|
DEBUG |
Bietet detaillierte Logs. Normalerweise wird diese Stufe nur zur Fehlerbehebung festgelegt. |
INFO |
Die standardmäßige Logebene für Endpoints Frameworks. Ermöglicht das Verfolgen des Fortschritts Ihrer Anwendung auf übergeordneter Ebene. |
WARNING |
Warnt Sie bei unerwarteten Ereignissen. Die Anwendung kann jedoch wiederhergestellt und trotzdem normal ausgeführt werden. |
ERROR |
Warnt Sie bei einem Fehler, der zu Funktionsverlust führen kann, obwohl die Anwendung weiterhin ausgeführt wird. |
CRITICAL |
Warnt Sie bei einem schwerwiegenden Fehler oder Ereignis, wodurch die Anwendung möglicherweise heruntergefahren wird. |
Logger existieren in einer durch Punkte getrennten Hierarchie. Der Logger endpoints.api_config
ist beispielsweise dem Logger endpoints
untergeordnet. Mit dieser Hierarchie können Sie genau steuern, welche Logs ausgegeben oder unterdrückt werden. In der Regel ändern Sie nur die beiden Stamm-Logger für Endpoints Frameworks: endpoints
und endpoints_management
.
DEBUG
-Logging für Endpoints Frameworks aktivieren
Endpoints Frameworks legt die Logger so fest, dass nur Logeinträge mit der Logebene INFO
oder höher aufgezeichnet werden, damit der Logreader nicht überlastet wird. Nachdem Endpoints Frameworks in das Modul importiert wurde, können Sie die Logebenen jederzeit so ändern:
import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)
Die Methode setLevel
legt die Mindestlogebene für den Logger fest.