區域 ID
REGION_ID
是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。此代碼不對應至國家/地區或省份,即使部分區域 ID 可能與常用的國家/地區和省份代碼相似。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r
。如果是這段時間前建立的現有應用程式,網址可選擇是否包含地區 ID。
進一步瞭解區域 ID。
本頁說明如何透過 App Engine 應用程式發出 HTTP(S) 要求。
根據預設,App Engine 會使用網址擷取服務發出傳出 HTTP(S) 要求。 如要進一步瞭解要求大小上限和透過網址擷取要求傳送的標頭,請參閱傳出要求。如果您已設定無伺服器虛擬私有雲存取,或使用 Sockets API,則需要停止讓網址擷取服務處理要求。URL Fetch 會導致對 VPC 網路或 Sockets API 的要求失敗。停用網址擷取後,標準 Python 程式庫會處理 HTTP 要求。如要針對特定要求使用 URL Fetch 提供的功能,可以直接對這些特定要求使用 urlfetch
程式庫。
發出 HTTP 要求
如要發出傳出 HTTP 要求,請使用 urlfetch.fetch
方法。為提升程式碼可攜性,您也可以使用 Python 標準程式庫 urllib
、urllib2
或 httplib
發出 HTTP 要求。在 App Engine 中使用這些程式庫時,程式庫會使用 App Engine 的網址擷取服務執行 HTTP 要求。您也可以使用第三方的 requests
程式庫,只要將其設為使用 URLFetch 即可。
urlfetch
下列程式碼片段示範如何使用 urlfetch
執行基本的 HTTP GET
要求。首先,從 App Engine SDK 匯入 urlfetch
程式庫:
接著,使用 urlfetch
執行 GET
要求:
下列程式碼片段示範如何執行更進階的要求,透過 HTTP POST
要求使用 urlfetch
從網頁表單提交資料:
urllib2
下列程式碼片段示範如何使用 urllib2
執行基本的 HTTP GET
要求。首先,匯入 urllib2
程式庫:
接著,使用 urllib2
執行 GET
要求:
要求
如要使用要求,請按照供應商操作說明,安裝 requests
和 requests-toolbelt
。
安裝完成後,使用 requests_toolbelt.adapters.appengine
模組將要求設為使用 URLFetch:
設定完成後,您就能夠正常使用要求。
如要進一步瞭解要求對 Google App Engine 的支援情形,請參閱 urllib3.contrib.appengine
和 requests_toolbelt.appengine
的說明文件。
設定要求逾時
您可以使用 urlfetch.set_default_fetch_deadline()
函式調整預設期限。這個函式會將新的預設期限儲存在執行緒本機變數上,因此必須在例如自訂中介軟體中依照不同要求進行個別設定。
停用重新導向
如果您使用網址擷取服務,預設情況下,基礎網址擷取服務最多會追蹤五次重新導向。這些重新導向可能會將授權標頭等私密資訊轉送至重新導向目的地。如果應用程式不需要 HTTP 重新導向,建議停用重新導向。
如要禁止網址擷取服務追蹤重新導向連結,請將 fetch
方法的 follow_redirects
參數設為 False
。
發出 HTTPS 要求
根據預設,基礎網址擷取服務會驗證所連線主機的憑證,如果憑證不符,就會拒絕要求。您不需要明確保護要求。
停用主機憑證驗證
如要在網址擷取中停用自動驗證主機憑證的功能,請發出 HTTPS 要求,並在呼叫 urlfetch.fetch()
方法時,將 validate_certificate
參數設為 False
。
發出非同步要求
HTTP(S) 要求預設為同步。如要發出不同步的要求,應用程式必須:
- 使用
urlfetch.create_rpc()
建立新的遠端程序呼叫 (RPC) 物件。這個物件代表您在後續方法呼叫中的非同步呼叫。 - 呼叫
urlfetch.make_fetch_call()
提出要求。這個方法需要將 RPC 物件與要求目標的網址做為參數。 - 呼叫 RPC 物件的
get_result()
方法。這個方法會在要求成功時傳回結果物件;如果要求期間發生錯誤,則會發出例外狀況。
下列程式碼片段示範如何從 Python 應用程式建立基本的非同步要求。首先,從 App Engine SDK 匯入 urlfetch
程式庫:
接著,使用 urlfetch
發出非同步要求:
設定要求逾時
如要為要求設定逾時時間,請在建立 RPC 物件時,設定 urlfetch.create_rpc()
方法的 deadline
參數。
使用回呼函式
您可以針對遠端程序呼叫 (RPC) 物件定義回呼函式。當應用程式在物件上呼叫方法 (例如 wait()
、checksuccess()
或 get_result()
) 時,系統會呼叫函式,導致物件等待要求完成。
如要使用回呼函式處理擷取呼叫的結果:
- 建立輔助函式來定義回呼範圍。
- 建立處理常式函式以處理擷取呼叫的結果。
- 將 RPC 物件的
callback
屬性設為輔助函式。
以下程式碼片段示範如何叫用回呼函式:
向其他 App Engine 應用程式發出要求
發出要求至其他 App Engine 應用程式時,App Engine 應用程式必須在要求中加入 X-Appengine-Inbound-Appid
標頭以表明自己的身分。如果您指示網址擷取服務不要追蹤重新導向,App Engine 會自動在要求中加入這個標頭。
如需停用重新導向的相關指引,請參閱「停用重新導向」。
後續步驟
如要瞭解網址擷取服務,例如透過網址擷取要求傳送的標頭,請參閱傳出要求一文。