Migrazione a Cloud Endpoints Frameworks versione 2.0

Cloud Endpoints Frameworks era precedentemente noto come Endpoints. Per distinguerle, in questa pagina la nuova versione è indicata come Endpoints Frameworks versione 2.0 e la versione precedente come Endpoints versione 1.0. In questa pagina viene descritto come eseguire la migrazione dall'applicazione Cloud Endpoints versione 1.0 Framework Endpoint versione 2.0. La migrazione consiste in una modifica della libreria e nella configurazione dell'applicazione senza dover apportare modifiche al codice.

Vantaggi

La versione 2.0 di Endpoints offre una serie di vantaggi, tra cui:

  • Latenza delle richieste ridotta.
  • Migliore integrazione con le funzionalità di App Engine, come i domini personalizzati.
  • Nuove funzionalità di gestione delle API.

La versione 2.0 di Endpoints Frameworks non influisce sulle interfacce della tua API. I client esistenti continuano a funzionare dopo la migrazione senza alcuna modifica al codice lato client.

Panoramica delle funzioni

Le seguenti funzionalità sono compatibili con le versioni precedenti di Endpoints:

  • Protocollo JSON-REST utilizzato da tutte le librerie client di Google
  • Servizio di discovery
  • Tutte le funzionalità di autenticazione esistenti (OAuth2/OpenID Connect)
  • Supporto della libreria client per i client generati
  • CORS (per i chiamanti JavaScript che non utilizzano la libreria client JavaScript di Google)
  • Explorer API

La suddivisione del traffico non è disponibile.

Funzionalità attualmente escluse

Le seguenti funzionalità non sono disponibili. Se hai bisogno di una di queste funzionalità, invia una richiesta di funzionalità.

  • Protocollo JSON-RPC, obbligatorio per i client iOS precedenti. Per creare iOS per l'API Endpoints Frameworks versione 2.0, di utilizzare Libreria client Objective-C delle API di Google per API REST.
  • ETag automatici
  • Campi kind automatici
  • Integrazione con l'ambiente IDE
  • fields risposte parziali
  • Creazione automatica del metodo dell'API PATCH

Migrazione da Endpoints versione 1.0

Per eseguire la migrazione dalla versione 1.0:

  1. Crea una sottocartella denominata /lib nella directory principale dell'applicazione.

  2. Installa la libreria dalla directory principale dell'applicazione:

     pip install -t lib google-endpoints --ignore-installed
    
  3. Rimuovi le voci - name: endpoints e version 1.0 da app.yaml dell'applicazione nella sezione libraries. Ad esempio:

    libraries:
    - name: endpoints   #Remove
      version: 1.0      #Remove
    
  4. Nella sezione libraries del file app.yaml, aggiungi quanto segue:

    libraries:
    - name: pycrypto
      version: 2.6
    - name: ssl
      version: 2.7.11
    

    Endpoints Frameworks richiede queste versioni delle librerie pycrypto e ssl.

  5. Nella sezione handlers del file app.yaml, modifica la direttiva url da - url: /_ah/spi/.* a - url: /_ah/api/.*.

  6. Nella directory root dell'applicazione, crea o modifica un file denominato appengine_config.py per includere quanto segue:

    from google.appengine.ext import vendor
    
    vendor.add('lib')
    
  7. Controlla la stringa della versione API. La stringa di versione, specificata nel Decora @endpoints.api(version='v1', ...), compare nel percorso dell'API. Se specifichi una stringa di versione compatibile con lo standard SemVer, nel percorso dell'API viene visualizzato solo il numero della versione principale quando esegui il deployment dell'API. Ad esempio, un'API denominata echo con versione 2.1.0 hanno un percorso come /echo/v2. Se aggiorni l'API echo alla versione 2.2.0 ed esegui il deployment di una modifica compatibile con le versioni precedenti, il percorso rimane /echo/v2. In questo modo puoi aggiornare il numero di versione dell'API quando apporti una modifica compatibile con le versioni precedenti senza interrompere i percorsi esistenti per i tuoi clienti. Tuttavia, se aggiorni l'API echo alla versione 3.0.0 (perché stai implementando una modifica che comporta una interruzione), il percorso viene modificato in /echo/v3.

  8. Esegui di nuovo il deployment dell'applicazione Endpoints Frameworks.

Verifica di un nuovo deployment

Per verificare che il nuovo framework gestisca il traffico:

  1. Invia alcune richieste al nuovo deployment.
  2. Visita la pagina Cloud Logging per il tuo progetto.

    Vai alla pagina Esplora log

  3. Se le richieste vengono mostrate con percorsi che iniziano con /_ah/api, La versione 2.0 di Endpoints Frameworks sta ora gestendo la tua API. I log non deve mostrare richieste con percorsi che iniziano con /_ah/spi. Queste richieste indicano che il proxy Endpoints versione 1.0 sta ancora gestendo le richieste.

Aggiunta della gestione delle API

La versione 2.0 di Endpoints Frameworks aggiunge funzionalità di gestione delle API, tra cui:

  • Gestione delle chiavi API
  • Condivisione API
  • Autenticazione degli utenti
  • Metriche delle API
  • Log API

Per iniziare, vai al Guida introduttiva a Endpoints Frameworks per Python .

Risoluzione dei problemi

Questa sezione descrive i comuni comportamenti irregolari durante la migrazione a Endpoints Frameworks versione 2.0 e soluzioni suggerite.

L'API restituisce errori 404, ma Explorer API le elenca comunque correttamente

Devi rimuovere la vecchia configurazione di Endpoints 1.0 quando esegui la migrazione alla versione 2.0 di Endpoints Frameworks. Se la vecchia configurazione è ancora presente nella configurazione dell'applicazione, Il servizio Endpoints continua a considerare l'app come versione 1.0 dell'app. Potresti vedere richieste nei log di App Engine inviate a /_ah/spi, che comportano l'invio di HTTP 404 errori al client.

  1. Rimuovi dal file app.yaml le seguenti righe, se presenti:

    handlers:
    - url: /_ah/spi/.*
      script: ...
    
  2. Assicurati che la sezione handlers nel file app.yaml abbia il corretto percorso:

    handlers:
    # The endpoints handler must be mapped to /_ah/api.
    - url: /_ah/api/.*
      script: ...
    

Messaggio di errore: ImportError: cannot import name locked_file

Questo accade se le dipendenze contengono una versione dell'istruzione oauth2client non compatibile con App Engine. Consulta le problema noto.