ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r
è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Questa pagina descrive come inviare richieste HTTP(S) dalla tua app App Engine utilizzando il servizio di recupero URL per gli ambienti di runtime di seconda generazione.
Prima di seguire le istruzioni riportate in questa pagina, ti consigliamo di utilizzare soluzioni idiomatiche per il linguaggio per emettere richieste HTTP(S) prima di utilizzare il servizio di recupero dell'URL. Il caso d'uso principale per l'utilizzo del recupero dell'URL è quando vuoi emettere richieste HTTP(S) a un'altra app App Engine e affermare l'identità della tua app su quella richiesta.
Per informazioni dettagliate sui limiti di dimensione delle richieste e sulle intestazioni inviate in una richiesta di recupero URL, consulta Richieste in uscita.
Invio di una richiesta HTTP
Per utilizzare il servizio di recupero URL per inviare richieste HTTP(S) in uscita, devi chiamare esplicitamente la libreriaurlfetch
.
Per emettere una richiesta HTTP in uscita, puoi utilizzare una delle seguenti librerie:
- Per una maggiore portabilità del codice, utilizza la libreria standard di Python
urllib.request
per inviare richieste HTTP. - Utilizza una libreria di terze parti, come
requests
. Chiama esplicitamente la libreria
urlfetch
e utilizza il metodourlfetch.fetch
.
urllib.request
Importa la libreria urllib.request
:
import urllib.request
Quindi, utilizza urllib.request
per eseguire la richiesta GET
:
url = 'http://www.google.com/humans.txt'
try:
result = urllib.request.urlopen(url)
self.response.write(result.read())
except urllib.error.URLError:
logging.exception('Caught exception fetching url')
urlfetch
I seguenti snippet mostrano come eseguire una richiesta HTTP
GET
di base utilizzando urlfetch
. Innanzitutto, importa la libreria urlfetch
dall'SDK App Engine:
Quindi, utilizza urlfetch
per eseguire la richiesta GET
:
Lo snippet seguente mostra come eseguire una richiesta più avanzata, inviando i dati da un modulo web tramite una richiesta POST
HTTP utilizzando urlfetch
:
Impostazione di un timeout della richiesta
Puoi modificare la scadenza predefinita utilizzando la funzione
urlfetch.set_default_fetch_deadline()
. Questa funzione memorizza la nuova scadenza predefinita in una variabile locale del thread, pertanto deve essere impostata per ogni richiesta, ad esempio in un middleware personalizzato.
Disattivare i reindirizzamenti
Se utilizzi il recupero dell'URL, il servizio di recupero dell'URL sottostante segue fino a cinque reindirizzamenti per impostazione predefinita. Questi reindirizzamenti potrebbero inoltrare informazioni sensibili, come le intestazioni di autorizzazione, alla destinazione reindirizzata. Se la tua app non richiede i reindirizzamenti HTTP, ti consigliamo di disattivarli.
Per indicare al servizio di recupero dell'URL di non seguire i reindirizzamenti, imposta il parametro follow_redirects
del metodo fetch
su False
.
Invio di una richiesta HTTPS
Per emettere una richiesta HTTPS, imposta il parametro validate_certificate
su true
quando chiami il metodo urlfetch.fetch()
.
Invio di una richiesta asincrona
Le richieste HTTP(S) sono sincrone per impostazione predefinita. Per emettere una richiesta asincrona, l'applicazione deve:
- Crea un nuovo oggetto RPC utilizzando
urlfetch.create_rpc()
. Questo oggetto rappresenta la chiamata asincrona nelle chiamate metodi subsequenti. - Chiama
urlfetch.make_fetch_call()
per effettuare la richiesta. Questo metodo prende come parametri l'oggetto RPC e l'URL del target della richiesta. - Chiama il metodo
get_result()
dell'oggetto RPC. Questo metodo restituisce l'oggetto risultato se la richiesta ha esito positivo e genera un'eccezione se si è verificato un errore durante la richiesta.
Gli snippet riportati di seguito mostrano come effettuare una richiesta asincrona di base da un'applicazione Python. Innanzitutto, importa la libreria urlfetch
dall'SDK App Engine:
A questo punto, utilizza urlfetch
per effettuare la richiesta asincrona:
Impostazione di un timeout della richiesta
Per impostare un timeout per la richiesta, imposta il parametro deadline
del metodo urlfetch.create_rpc()
quando crei l'oggetto RPC.
Utilizzo di una funzione di callback
Puoi definire una funzione di callback per l'oggetto RPC. La funzione verrà chiamata quando l'applicazione chiama un metodo sull'oggetto, ad esempio wait()
, checksuccess()
o get_result()
, che fa sì che l'oggetto attenda il completamento della richiesta.
Per utilizzare una funzione di callback per gestire il risultato della chiamata di recupero:
- Crea una funzione di supporto per definire l'ambito del callback.
- Crea una funzione di gestore per gestire il risultato della chiamata di recupero.
- Imposta l'attributo
callback
dell'oggetto RPC sulla funzione di supporto.
Lo snippet seguente mostra come richiamare una funzione di callback:
Emissione di una richiesta a un'altra app App Engine
Quando utilizzi URL Fetch per inviare una richiesta a un'altra app App Engine, la tua app può affermare la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid
alla richiesta.
Se indichi al servizio di recupero dell'URL di non seguire i reindirizzamenti, App Engine aggiugnerà automaticamente questa intestazione alle richieste. Per istruzioni su come disattivare i reindirizzamenti, consulta Disattivare i reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero URL, ad esempio le intestazioni inviate in una richiesta di recupero URL nelle richieste in uscita.