ID region
REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Halaman ini menjelaskan cara menerbitkan permintaan HTTP(S) dari aplikasi App Engine Anda menggunakan layanan URL Fetch untuk runtime generasi kedua.
Sebelum mengikuti petunjuk di halaman ini, sebaiknya gunakan solusi idiomatis bahasa untuk mengeluarkan permintaan HTTP(S) sebelum menggunakan layanan URL Fetch. Kasus penggunaan utama untuk menggunakan URL Fetch adalah saat Anda ingin mengirim permintaan HTTP(S) ke aplikasi App Engine lain dan menegaskan identitas aplikasi Anda pada permintaan tersebut.
Untuk mengetahui detail tentang batas ukuran permintaan dan header mana yang dikirim dalam permintaan URL Fetch, lihat Permintaan keluar.
Mengirim permintaan HTTP
Untuk menggunakan layanan URL Fetch guna mengeluarkan permintaan HTTP(S) keluar,
panggil library urlfetch.
Untuk mengeluarkan permintaan HTTP keluar, gunakan salah satu library berikut:
- Untuk meningkatkan portabilitas kode, gunakan library standar Python
urllib.requestuntuk mengeluarkan permintaan HTTP. - Menggunakan library pihak ketiga, seperti
requests. Panggil library
urlfetchsecara eksplisit dan gunakan metodeurlfetch.fetch.
urllib.request
Impor library urllib.request:
import urllib.request
Selanjutnya, gunakan urllib.request untuk melakukan permintaan 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
Cuplikan berikut menunjukkan cara membuat permintaan
GET HTTP dasar menggunakan urlfetch. Pertama, impor
library urlfetch dari App Engine SDK:
Gunakan urlfetch untuk melakukan permintaan GET:
Cuplikan berikut menunjukkan cara melakukan permintaan lanjutan,
mengirimkan data dari formulir web melalui permintaan POST HTTP menggunakan
urlfetch:
Menyetel waktu tunggu permintaan
Sesuaikan batas waktu default menggunakan fungsi
urlfetch.set_default_fetch_deadline(). Fungsi ini menyimpan
batas waktu default baru pada variabel lokal thread, sehingga harus ditetapkan untuk setiap
permintaan, misalnya, di middleware khusus.
Menonaktifkan pengalihan
Jika Anda menggunakan URL Fetch, layanan URL-Fetch dasar akan mengikuti hingga lima pengalihan secara default. Pengalihan ini dapat meneruskan informasi sensitif, seperti header otorisasi, ke tujuan yang dialihkan. Jika aplikasi Anda tidak memerlukan pengalihan HTTP, sebaiknya nonaktifkan pengalihan.
Untuk menginstruksikan layanan URL Fetch agar tidak mengikuti pengalihan, tetapkan parameter follow_redirects
metode fetch ke False.
Mengirim permintaan HTTPS
Secara default, layanan Fetch URL yang mendasarinya memvalidasi sertifikat host yang dihubungi, dan menolak permintaan jika sertifikat tidak cocok. Anda tidak perlu mengamankan permintaan secara eksplisit.
Menonaktifkan validasi sertifikat host
Untuk menonaktifkan validasi sertifikat host otomatis di URL Fetch, kirim permintaan HTTPS, dan tetapkan parameter validate_certificate ke False saat memanggil metode urlfetch.fetch().
Mengirim permintaan asinkron
Permintaan HTTP(S) sinkron secara default. Untuk mengirimkan permintaan asinkron, aplikasi Anda harus:
- Buat objek RPC baru menggunakan
urlfetch.create_rpc(). Objek ini mewakili panggilan asinkron Anda dalam panggilan metode berikutnya. - Panggil
urlfetch.make_fetch_call()untuk membuat permintaan. Metode ini menggunakan objek RPC Anda dan URL target permintaan sebagai parameter. - Panggil metode
get_result()objek RPC. Metode ini menampilkan objek hasil jika permintaan berhasil, dan memunculkan pengecualian jika terjadi error selama permintaan.
Cuplikan berikut menunjukkan cara membuat permintaan asinkron
dasar dari aplikasi Python. Pertama, impor
library urlfetch dari App Engine SDK:
Selanjutnya, gunakan urlfetch untuk membuat permintaan asinkron:
Menyetel waktu tunggu permintaan
Guna menetapkan waktu tunggu untuk permintaan Anda,
tetapkan parameter deadline metode urlfetch.create_rpc() saat Anda membuat objek RPC.
Menggunakan fungsi callback
Anda dapat menentukan fungsi callback untuk objek RPC Anda. Fungsi tersebut
akan dipanggil saat aplikasi Anda memanggil metode pada objek
tersebut—sepertiwait() danchecksuccess(), atau
get_result()—yang menyebabkan objek menunggu
hingga permintaan selesai.
Untuk menggunakan fungsi callback guna menangani hasil panggilan ambil:
- Buat fungsi bantuan untuk menentukan cakupan callback.
- Buat fungsi pengendali untuk menangani hasil panggilan ambil Anda.
- Tetapkan atribut
callbackobjek RPC Anda ke fungsi bantuan.
Cuplikan berikut menunjukkan cara memanggil fungsi callback:
Mengirim permintaan ke aplikasi App Engine lain
Saat menggunakan URL Fetch untuk menerbitkan permintaan ke aplikasi App Engine lain, aplikasi Anda dapat menegaskan identitasnya dengan menambahkan header X-Appengine-Inbound-Appid ke permintaan tersebut.
Jika Anda menginstruksikan layanan URL-Fetch untuk tidak mengikuti pengalihan, App Engine akan otomatis menambahkan header ini ke permintaan. Lihat Menonaktifkan pengalihan untuk mendapatkan panduan tentang cara menonaktifkan pengalihan.
Langkah berikutnya
Pelajari layanan URL-Fetch, seperti header yang dikirim dalam permintaan URL Fetch di Permintaan Keluar.