Creazione dell'API utilizzando Cloud Endpoints Frameworks per Python

Un'API è un servizio di chiamata di procedura remota (RPC) che fornisce metodi remoti accessibili ai client esterni. Ogni API di backend è costituita da una classe di servizio RPC che è una sottoclasse della ProtoRPC remote.Service classe e da uno o più metodi. Quando definisci un metodo, devi anche definire Message classi per le richieste in entrata e le risposte restituite. Una classe Message esegue una funzione di mapping in modo che i dati in entrata possano essere estratti e forniti correttamente al metodo di servizio o forniti correttamente alla risposta in uscita.

Se una richiesta ha argomenti del percorso o della stringa di query, utilizzi una ResourceContainer classe per il mapping anziché una semplice Message classe.

Infine, devi decorare la classe di servizio API e i metodi della classe e definire le classi Message per le richieste e le risposte.

Creazione dell'API

La seguente procedura mostra come decorare il codice per creare un'API implementata in una singola classe. Se hai un'API multi-classe, consulta Creazione di un'API implementata con più classi. Per informazioni dettagliate su tutti i decoratori disponibili, consulta Decoratori.

Per creare un'API:

  1. Aggiungi le seguenti importazioni obbligatorie:

    import endpoints
    from endpoints import message_types
    from endpoints import messages
    from endpoints import remote
  2. Definisci una sottoclasse di remote.Service e decorala con @endpoints.api:

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

    Tieni presente che il nome dell'API e il nome della classe di servizio non devono essere uguali. Il numero di versione si applica alla versione dell'API. Il valore che inserisci diventa parte del percorso nell'URL dell'API. Per ulteriori informazioni sulle versioni, consulta Gestione del controllo della versione dell'API.

  3. Determina quali dati il metodo si aspetta dalla richiesta e quali dati vengono restituiti e crea una Message classe per il corpo della richiesta e il corpo della risposta:

    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)
    )

    Tieni presente che se nel corpo della richiesta non vengono visualizzati argomenti, ad esempio in una GET richiesta, puoi omettere la classe Message per la richiesta e utilizzare semplicemente il valore message_types.VoidMessage.

    Se la richiesta ha argomenti del percorso o della stringa di query, sostituisci la classe Message con un ResourceContainer appropriato.

    Per informazioni complete sulla creazione e sull'utilizzo delle classi Message, consulta la documentazione relativa alle classi Message di richiesta e risposta di Google Protocol RPC.

  4. Crea il metodo per l'API e decoralo con @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):

    Se la richiesta contiene dati del percorso o della stringa di query, sostituisci il tipo di messaggio di richiesta con un ResourceContainer appropriato.

  5. Aggiungi il codice per pubblicare l'API, come descritto in Creazione di un server web.

Passaggi successivi