ID regione
L'elemento REGION_ID è un codice abbreviato che Google assegna 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 i runtime di seconda generazione.
Prima di seguire le istruzioni riportate in questa pagina, ti consigliamo di utilizzare soluzioni idiomatiche del linguaggio per inviare richieste HTTP(S) prima di utilizzare il servizio di recupero URL. Il caso d'uso principale per l'utilizzo del recupero URL è quando vuoi inviare richieste HTTP(S) a un'altra app App Engine e asserire l'identità della tua app nella richiesta.
Per informazioni dettagliate sui limiti di dimensione delle richieste e sulle intestazioni inviate in una richiesta di recupero URL, consulta Richieste in uscita.
Inviare una richiesta HTTP
Per utilizzare il servizio di recupero URL per inviare richieste HTTP(S) in uscita,
chiama la urlfetch libreria.
Per inviare una richiesta HTTP in uscita, utilizza una delle seguenti librerie:
- Per una migliore portabilità del codice, utilizza la libreria standard Python
urllib.requestper inviare richieste HTTP. - Utilizza una libreria di terze parti, ad esempio
requests. Chiama esplicitamente la libreria
urlfetche utilizza ilurlfetch.fetchmetodo.
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:
Utilizza urlfetch per eseguire la richiesta GET:
Il seguente snippet mostra come eseguire una richiesta più avanzata, inviando dati da un modulo web tramite una richiesta HTTP POST utilizzando urlfetch:
Impostare un timeout della richiesta
Modifica la scadenza predefinita utilizzando la funzione urlfetch.set_default_fetch_deadline(). Questa funzione memorizza la nuova scadenza predefinita in una variabile thread-local, quindi deve essere impostata per ogni richiesta, ad esempio in un middleware personalizzato.
Disattivare i reindirizzamenti
Se utilizzi il recupero URL, il servizio di recupero 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 reindirizzamenti HTTP, ti consigliamo di disattivarli.
Per indicare al servizio di recupero URL di non seguire i reindirizzamenti, imposta il fetch
parametro follow_redirects
del metodo su False.
Inviare una richiesta HTTPS
Per impostazione predefinita, il servizio di recupero URL sottostante convalida il certificato dell'host che contatta e rifiuta le richieste se il certificato non corrisponde. Non è necessario proteggere esplicitamente la richiesta.
Disattivare la convalida del certificato host
Per disattivare la convalida automatica del certificato host nel recupero URL, invia una richiesta HTTPS e imposta il parametro validate_certificate su False quando chiami il metodo urlfetch.fetch().
Inviare una richiesta asincrona
Per impostazione predefinita, le richieste HTTP(S) sono sincrone. Per inviare una richiesta asincrona, l'applicazione deve:
- Crea un nuovo oggetto RPC utilizzando
urlfetch.create_rpc(). Questo oggetto rappresenta la chiamata asincrona nelle chiamate di metodo successive. - Chiama
urlfetch.make_fetch_call()per effettuare la richiesta. Questo metodo accetta come parametri l'oggetto RPC e l'URL della destinazione 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.
I seguenti snippet mostrano come effettuare una richiesta asincrona di base da un'applicazione Python. Innanzitutto, importa la libreria urlfetch dall'SDK App Engine:
Quindi, utilizza urlfetch per effettuare la richiesta asincrona:
Impostare 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.
Utilizzare 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 helper per definire l'ambito del callback.
- Crea una funzione di gestione per gestire il risultato della chiamata di recupero.
- Imposta l'attributo
callbackdell'oggetto RPC sulla funzione helper.
Il seguente snippet mostra come richiamare una funzione di callback:
Inviare una richiesta a un'altra app App Engine
Quando utilizzi il recupero URL per inviare una richiesta a un'altra app App Engine, la tua app può asserire la propria identità aggiungendo l'intestazione X-Appengine-Inbound-Appid alla richiesta.
Se indichi al servizio di recupero URL di non seguire i reindirizzamenti, App Engine aggiungerà automaticamente questa intestazione alle richieste. Per indicazioni su come disattivare i reindirizzamenti, consulta Disattivare i reindirizzamenti.
Passaggi successivi
Scopri di più sul servizio di recupero URL, ad esempio le intestazioni che sono inviate in una richiesta di recupero URL in Richieste in uscita.