Questa pagina descrive la migrazione di un'applicazione Cloud Endpoints versione 1.0 esistente a Endpoints Frameworks per App Engine in Java.
Vantaggi
Il nuovo framework offre una serie di vantaggi, tra cui:
- Latenza delle richieste ridotta.
- Migliore integrazione con le funzionalità di App Engine, come i domini personalizzati.
- Supporto ufficiale per le configurazioni Guice.
- (Facoltativo) Nuove funzionalità di gestione delle API.
Endpoints Frameworks versione 2.0 non influisce sulle interfacce della tua API. I client esistenti continuano a funzionare dopo la migrazione senza modifiche al codice lato client.
Funzionalità e strumenti attualmente esclusi
Le seguenti funzionalità non sono al momento disponibili. Se hai bisogno di uno di questi, invia una richiesta di funzionalità.
- Protocollo JSON-RPC, necessario per i client iOS legacy. Per creare client iOS per la tua API Endpoints Frameworks versione 2.0, ti consigliamo di utilizzare la libreria client Objective-C delle API di Google per le API REST.
- ETag automatici
- Campi automatici del tipo
- Integrazione con l'ambiente IDE
fieldsrisposte parziali- Creazione automatica del metodo API PATCH
Inoltre, il supporto di Android Studio per Endpoints versione 1.0 non è attualmente supportato per la versione 2.0.
Migrazione a Endpoints Frameworks versione 2.0
Endpoints Frameworks versione 2.0 è stato spostato negli artefatti Maven nel gruppo
com.google.endpoints.
Il JAR di base richiesto si trova nell'artefatto endpoints-framework. Se vuoi
utilizzare la configurazione Guice, aggiungi l'artefatto endpoints-framework-guice.
Le seguenti istruzioni forniscono un esempio di come eseguire la migrazione da Endpoints Frameworks versione 1.0 a Endpoints Frameworks versione 2.0 utilizzando un documento Discovery:
- Scarica e inizializza Google Cloud CLI.
- Esegui i seguenti comandi:
- Assicurati che gcloud CLI sia autorizzata ad accedere ai tuoi dati e servizi su Google Cloud:
gcloud auth login
- Utilizza le credenziali predefinite dell'applicazione:
gcloud auth application-default login
- Installa il componente
app-engine-javadi Google Cloud SDK:gcloud components install app-engine-java
- Esegui l'aggiornamento all'ultima versione di Google Cloud SDK e di tutti i componenti:
gcloud components update
- Assicurati che gcloud CLI sia autorizzata ad accedere ai tuoi dati e servizi su Google Cloud:
Eseguire la migrazione utilizzando Maven o Gradle
Maven
- Rimuovi la dipendenza legacy, ovvero l'artefatto
appengine-endpoints: - Aggiungi la nuova dipendenza di Endpoints Frameworks:
- Aggiungi il nuovo plug-in Endpoints Frameworks e definisci il nome host per un documento di rilevamento generato:
- Aggiungi il nuovo plug-in Maven App Engine:
- Aggiorna il punto di ingresso dell'API nel file
web.xmldel progetto:- Rinomina tutte le occorrenze di
SystemServiceServletinEndpointsServlet - Sostituisci tutte le occorrenze del percorso
/_ah/spi/con il nuovo percorso richiesto/_ah/api/
Di seguito sono riportati i contenuti di
web.xmlprima e dopo la migrazione:Prima della migrazione
Endpoints Frameworks versione 1.0web.xml:Dopo la migrazione
Endpoints Frameworks versione 2.0web.xml: - Rinomina tutte le occorrenze di
- Dopo aver modificato le dipendenze, pulisci il progetto:
mvn clean
- Puoi generare un documento di rilevamento:
Scopri di più sugli obiettivi del plug-in Maven Endpoints Frameworks.mvn endpoints-framework:discoveryDocs
- Puoi eseguire il deployment di un progetto:
mvn appengine:deploy
Scopri di più sugli obiettivi del plug-in Maven App Engine.
Gradle
- Rimuovi la dipendenza legacy, ovvero l'artefatto
appengine-endpoints:compile group: 'com.google.appengine', name: 'appengine-endpoints', version: '+'
- Aggiungi la nuova dipendenza di Endpoints Frameworks:
- Aggiungi i nuovi plug-in App Engine e Endpoints Frameworks:
- Applica i nuovi plug-in App Engine e Endpoints Frameworks:
- Definisci l'endpoint del nome host per i documenti di rilevamento generati:
- Aggiorna il punto di ingresso dell'API nel file
web.xmldel progetto:- Rinomina tutte le occorrenze di
SystemServiceServletinEndpointsServlet - Sostituisci tutte le occorrenze del percorso
/_ah/spi/con il nuovo percorso richiesto/_ah/api/
Di seguito sono riportati i contenuti di
web.xmlprima e dopo la migrazione:Prima della migrazione
Endpoints Frameworks versione 1.0web.xml:Dopo la migrazione
Endpoints Frameworks versione 2.0web.xml: - Rinomina tutte le occorrenze di
- Dopo aver modificato le dipendenze, pulisci il progetto utilizzando:
gradle clean
- Puoi generare un documento di rilevamento utilizzando:
Scopri di più sulle attività del plug-in Gradle Endpoints Frameworksgradle endpointsDiscoveryDocs
- Puoi eseguire il deployment di un progetto utilizzando:
gradle appengineDeploy
Scopri di più sulle attività del plug-in Gradle App Engine.
Utilizzo di Guice per configurare Endpoints Frameworks per Java
Se vuoi utilizzare Guice:
- Aggiungi la nuova dipendenza Guice di Endpoints Frameworks:
Maven
Gradle
- Dichiara un nuovo modulo che estende
EndpointsModulee configuralo nel seguente modo:
Verifica di un nuovo deployment
Puoi verificare che il nuovo framework stia gestendo il traffico:
- Invia alcune richieste al nuovo deployment.
Nella console Google Cloud , vai alla pagina Logging > Esplora log.
Se le richieste vengono visualizzate con percorsi che iniziano con
/_ah/api, significa che Endpoints Frameworks versione 2.0 ora gestisce la tua API. I log non devono mostrare richieste con percorsi che iniziano con/_ah/spi. Queste richieste indicano che il proxy Endpoints Frameworks versione 1.0 continua a gestire le richieste.
Aggiunta della gestione delle API Endpoints
Endpoints Frameworks versione 2.0 consente anche di attivare le funzionalità di gestione delle API, tra cui:
- Gestione delle chiavi API
- Condivisione delle API
- Autenticazione degli utenti
- Metriche delle API
- Log API
Per iniziare a utilizzare queste funzionalità, consulta la sezione Aggiunta della gestione delle API.
Risoluzione dei problemi
Questa sezione descrive i comportamenti anomali comuni durante la migrazione a Endpoints Frameworks versione 2.0 e le soluzioni suggerite.
L'API restituisce errori 404, ma Explorer API elenca comunque le API correttamente
Quando esegui la migrazione a Endpoints Frameworks versione 2.0, devi rimuovere la configurazione della vecchia versione 1.0 di Endpoints Frameworks. Se
la vecchia configurazione è ancora presente nella configurazione dell'applicazione, il servizio Endpoints continua a trattare l'app
come un'app di versione 1.0.
Potresti visualizzare richieste nei log di App Engine inviate a /_ah/spi, che
comportano errori HTTP 404 inviati al client.
Se presenti, rimuovi le seguenti righe dal file
web.xml:<servlet> <servlet-name>SystemServiceServlet</servlet-name> <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class> <init-param> <param-name>services</param-name> <param-value>...</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SystemServiceServlet</servlet-name> <url-pattern>/_ah/spi/*</url-pattern> </servlet-mapping>Assicurati che il file
web.xmlcontenga quanto segue:<servlet-mapping> <servlet-name>EndpointsServlet</servlet-name> <url-pattern>/_ah/api/*</url-pattern> </servlet-mapping>
L'API genera errori di reflection
Devi includere nel pacchetto dell'applicazione solo l'artefatto endpoints-framework,
non il vecchio JAR appengine-endpoints. Se esegui il deployment di un'applicazione con entrambi i
file JAR, potresti riscontrare errori di reflection o di tipo di runtime, ad esempio
NoClassDefFoundError, NoSuchMethodError e ClassCastException. Rimuovi
le seguenti righe dal file di build, se presenti:
Maven
Gradle
compile group: 'com.google.appengine', name: 'appengine-endpoints', version: '+'
Inoltre, se una delle altre dipendenze dipende da versioni precedenti di
Guava, questo può manifestarsi anche come metodo TypeToken mancante. Devi assicurarti
di utilizzare Guava v19 o l'artefatto endpoints-framework-all, che
ombreggia le dipendenze.
Le origini della libreria client non vengono compilate
Se visualizzi un errore come method does not override or implement a method
from a supertype o cannot find symbol method setBatchPath(String), è probabile che la tua applicazione client dipenda da una versione precedente della libreria client Java di Google. Devi assicurarti che l'artefatto google-api-client sia
1.23.0 o superiore.
Maven
<dependency> <groupId>com.google.api-client</groupId> <artifactId>google-api-client</artifactId> <version>1.23.0</version> </dependency>
Gradle
compile group: 'com.google.api-client', name: 'google-api-client', version: '1.23.0'
Problemi con il miglioramento di JPA/JDO Datanucleus
Maven
Il nuovo plug-in Maven di App Engine basato Google Cloud CLI non supporta il miglioramento di Datanucleus di alcun tipo. Se il tuo progetto utilizza il supporto per il miglioramento di Datanucleus JDO o JPA del vecchio plug-in, devi configurare separatamente il plug-in Maven Datanucleus di terze parti durante la migrazione. Vai ai seguenti argomenti per ulteriori informazioni:
Gradle
Se il tuo progetto utilizza il miglioramento gradle-appengine-plugin JPA/JDO
Datanucleus, devi configurare manualmente il miglioramento Datanucleus
dopo aver eseguito il passaggio al nuovo plug-in Gradle basato su gcloud CLI.
Vedi un
esempio di Stack Overflow.