API mit Cloud Endpoints Frameworks für Python erstellen

Eine API ist ein RPC-Dienst (remote procedure call – Remoteprozeduraufruf), der für externe Clients zugängliche Remotemethoden bietet. Jede Back-End-API besteht aus einer RPC-Dienstklasse, die eine Unterklasse der ProtoRPC remote.Service-Klasse ist, und einer oder mehreren Methoden. Wenn Sie eine Methode definieren, müssen Sie auch Message-Klassen für die an die Methode gehenden Anfragen und die von ihr zurückgegebenen Antworten definieren. Eine Message-Klasse führt eine Zuordnungsfunktion aus, damit die eingehenden Daten extrahiert und der Dienstmethode bzw. der ausgehenden Antwort ordnungsgemäß zugeordnet werden können.

Wenn eine Anfrage Pfad- oder Abfragestringargumente enthält, verwenden Sie statt einer einfachen Message-Klasse eine ResourceContainer-Klasse für die Zuordnung.

Abschließend müssen Sie die API-Dienstklasse und die Klassenmethoden mit Decorators versehen und Message-Klassen für die Anfragen und Antworten definieren.

API erstellen

Im folgenden Verfahren wird gezeigt, wie Sie Ihren Code mit Decorators versehen, um eine API zu erstellen, die in eine einzelne Klasse implementiert ist. Wenn Sie eine API mit mehreren Klassen haben, erhalten Sie weitere Informationen unter Auf mehrere Klassen abgestimmte API erstellen. Ausführliche Informationen zu allen verfügbaren Decorators finden Sie unter Decorators.

So erstellen Sie eine API:

  1. Fügen Sie die folgenden benötigten Importe hinzu:

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
    
  2. Definieren Sie eine abgeleitete Klasse von remote.Service und versehen Sie sie mit dem Decorator @endpoints.api:

    @endpoints.api(name="echo", version="v1")
    class EchoApi(remote.Service):

    Beachten Sie, dass der Name der API und der Name der Dienstklasse nicht übereinstimmen müssen. Die Versionsnummer gilt für die Version der API. Der Wert, den Sie eingeben, wird Teil des Pfads in der URL zu Ihrer API. Weitere Informationen zu Versionen finden Sie unter API-Versionierung handhaben.

  3. Ermitteln Sie, welche Daten Ihre Methode von der Anfrage erwartet und welche Daten geliefert werden. Dann erstellen Sie eine Message-Klasse für den Anfragetext und den Antworttext:

    class EchoRequest(messages.Message):
        message = messages.StringField(1)
    
    class EchoResponse(messages.Message):
        """A proto Message that contains a simple string field."""
    
        message = messages.StringField(1)
    
    ECHO_RESOURCE = endpoints.ResourceContainer(
        EchoRequest, n=messages.IntegerField(2, default=1)
    )

    Falls im Anfragetext keine Argumente enthalten sind (wie bei einer GET-Anfrage), können Sie die Message-Klasse für die Anfrage weglassen und einfach den Wert message_types.VoidMessage verwenden.

    Wenn die Anfrage Pfad- oder Abfragestringargumente enthält, ersetzen Sie die Message-Klasse durch einen geeigneten ResourceContainer.

    Ausführliche Informationen zum Erstellen und Verwenden von Message-Klassen finden Sie in der Dokumentation für die Antwort- und Anfrage-Message-Klassen von Google Protocol RPC.

  4. Erstellen Sie die Methode für die API und versehen Sie die mit dem Decorator @endpoints.method:

    @endpoints.method(
            # This method takes a ResourceContainer defined above.
            ECHO_RESOURCE,
            # This method returns an Echo message.
            EchoResponse,
            path="echo",
            http_method="POST",
            name="echo",
        )
        def echo(self, request):

    Wenn die Anfrage Pfad- oder Abfragestring-Daten enthält, ersetzen Sie die Nachrichtenklasse für die Anfrage durch einen geeigneten ResourceContainer.

  5. Fügen Sie den Code zum Bereitstellen der API wie unter Webserver erstellen beschrieben hinzu.

Nächste Schritte