Auf mehrere Klassen abgestimmte API erstellen

Auf dieser Seite wird beschrieben, wie Sie Ihren Code mit Decorators versehen, um eine API zu erstellen, die in mehreren Klassen implementiert ist. Wenn Sie die in Ihrer API nur eine Klasse implementiert haben, finden Sie weitere Informationen unter API erstellen. Ausführliche Informationen zu allen verfügbaren Decorators finden Sie unter Decorators.

api_collection = endpoints.api(name="library", version="v1.0")

@api_collection.api_class(resource_name="shelves")
class Shelves(remote.Service):
    @endpoints.method(Request, Response)
    def list(self, request):
        return Response()

@api_collection.api_class(resource_name="books", path="books")
class Books(remote.Service):
    @endpoints.method(Request, Response, path="bookmark")
    def get_bookmark(self, request):
        return Response()

    @endpoints.method(Request, Response)
    def best_sellers_list(self, request):
        return Response()

Ersetzen Sie api_collection durch einen beliebigen Namen, sofern Sie für jede Klasse in der API denselben Namen verwenden. Jeder Klasse in der API muss der Decorator vorangestellt werden, wie im vorherigen Snippet gezeigt.

Über das Argument resource_name

Das optionale Argument resource_name für api_class ist der Name der Klasse, die Sie in der API verfügbar machen möchten. Dies ist der Name, der im API Explorer angezeigt und jeder anderen, in der Klasse verfügbar gemachten Methode vorangestellt wird.

Über das Argument path

Das optionale Argument path für api_class gibt die relative Position der Klassenmethoden in der URL an. Im vorherigen Beispiel wurde für die Klasse Shelves kein path angegeben. Also sind die Methoden unter dem Stammverzeichnis /_ah/api/library/v1 zugänglich. Die Methode list ist beispielsweise über den Pfad /_ah/api/library/v1/list zugänglich.

Wenn Sie ein Argument path für eine Klasse angeben, wird der angegebene Pfad an das Stammverzeichnis angefügt. Im vorigen Beispiel wird das path-Argument books für die Klasse Books angegeben, sodass die zugehörigen Methoden unter /_ah/api/library/v1/books zugänglich sind. Die Methode best_sellers_list ist beispielsweise über den Pfad /_ah/api/library/v1/books/best_sellers_list zugänglich.

Das Argument path ist für Methoden optional. Wenn Sie keinen path angeben, wird der Methodenname verwendet. Für Methoden angegebene Pfade werden an den Klassenpfad angehängt. Im vorigen Beispiel wurde bookmark als path für die Methode get_bookmark angegeben. Die Methode get_bookmark ist über den Pfad /_ah/api/library/v1/books/bookmark zugänglich.

Sie können das Argument path der Klasse durch Angabe eines Arguments path für die Methode überschreiben, das mit / beginnt. Angenommen, die Methode get_bookmark in der Klasse Books hat den folgenden Pfad:

@endpoints.method(Request, Response, path='/bookmark')
def get_bookmark(self, request):
  return Response()

Durch den vorangestellten Schrägstrich wird der Pfad für die Methode get_bookmark zu /_ah/api/library/v1/bookmark.

API mit mehreren Klassen bereitstellen

In Ihrem Code endpoints.api_server zum Erstellen des API-Servers geben Sie den Namen an, den Sie der Sammlung api_class zugewiesen haben. Wenn der Name der Sammlung beispielsweise api_collection ist, erstellen Sie den Server so:

api = endpoints.api_server([api_collection])

Nächste Schritte