Halaman ini menjelaskan cara aplikasi App Engine menggunakan layanan URL-fetch untuk mengeluarkan permintaan HTTP dan HTTPS serta menerima respons. Untuk melihat contoh kode yang menunjukkan cara membuat permintaan HTTP dan HTTPS dari aplikasi App Engine Anda, lihat Menerbitkan Permintaan HTTP(S).
Jika Anda telah menyiapkan Akses VPC Serverless atau jika Anda menggunakan Sockets API, Anda perlu menghentikan URL-fetch dari penanganan.
URL-fetch menyebabkan permintaan ke jaringan VPC Anda atau ke Sockets API gagal. Setelah Anda menonaktifkan URL-fetch, library Python standar akan menangani permintaan HTTP. Jika memerlukan fitur yang disediakan oleh URL-fetch untuk permintaan tertentu, Anda dapat menggunakan library urlfetch
secara langsung untuk permintaan khusus tersebut.
Permintaan
App Engine menggunakan layanan URL-fetch untuk membuat permintaan keluar. Di Python, Anda dapat menggunakan libraryhttplib
, urllib
, dan urllib2
untuk membuat permintaan HTTP;
di aplikasi App Engine, setiap library akan melakukan permintaan ini
dengan menggunakan layanan URL-fetch. Anda juga dapat menggunakan
library urlfetch
secara langsung.
Meminta protokol
Aplikasi dapat mengambil URL menggunakan HTTP atau HTTPS. Protokol yang harus digunakan disimpulkan dengan melihat protokol di URL target.
URL yang akan diambil dapat menggunakan nomor port apa pun dalam rentang berikut:
80
-90
440
-450
1024
-65535
.
Jika port tidak disebutkan pada URL, port tersebut akan disiratkan oleh
protokol. Permintaan HTTP terjadi di port 80
, dan permintaan HTTPS terjadi
di port 443
.
Metode permintaan
Jika menerbitkan permintaan melalui layanan URL-fetch, Anda dapat menggunakan salah satu metode HTTP berikut:
GET
POST
PUT
HEAD
DELETE
PATCH
Permintaan dapat mencakup header HTTP dan payload untuk permintaan POST
, PUT
,
dan PATCH
.
Meminta proxy
Perhatikan bahwa layanan URL-fetch menggunakan proxy yang sesuai dengan HTTP/1.1 untuk mengambil hasilnya.
Untuk mencegah aplikasi menyebabkan pengulangan permintaan tanpa akhir, pengendali permintaan tidak diizinkan untuk mengambil URL-nya sendiri. Hal ini masih dapat menyebabkan rekursi tanpa akhir dengan cara lain, jadi berhati-hatilah jika aplikasi Anda diizinkan mengambil permintaan untuk URL yang disediakan oleh pengguna.
Header permintaan
Aplikasi Anda dapat menyetel header HTTP untuk permintaan keluar.
Saat mengirim permintaan POST
HTTP, jika header Content-Type
tidak ditetapkan secara eksplisit, header akan ditetapkan ke x-www-form-urlencoded
.
Ini adalah jenis konten yang digunakan oleh formulir web.
Untuk alasan keamanan, header berikut tidak dapat dimodifikasi oleh aplikasi:
Content-Length
Host
Vary
Via
X-Appengine-Inbound-Appid
X-Forwarded-For
X-ProxyUser-IP
Header ini disetel ke nilai yang akurat oleh App Engine sesuai kebutuhan. Misalnya, App Engine menghitung header Content-Length
dari data permintaan dan menambahkannya ke permintaan sebelum mengirim.
Header berikut menunjukkan ID aplikasi dari aplikasi yang meminta:
User-Agent
. Header ini dapat diubah, tetapi App Engine akan menambahkan string ID agar server dapat mengidentifikasi permintaan App Engine. String yang ditambahkan memiliki format"AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)"
, denganAPPID
yang merupakan ID aplikasi Anda.X-Appengine-Inbound-Appid
. Header ini tidak dapat dimodifikasi, dan ditambahkan secara otomatis jika permintaan dikirim melalui layanan URL-fetch saat parameter pengalihan ikuti ditetapkan keFalse
.
Waktu tunggu permintaan
Anda dapat menetapkan batas waktu atau waktu tunggu untuk permintaan. Secara default, waktu tunggu untuk permintaan adalah 10 detik.
Anda dapat mengirim permintaan sinkron dan permintaan asinkron. Perilaku berikut berlaku untuk URL-fetch API:
- Permintaan sinkron: Panggilan pengambilan menunggu hingga host jarak jauh menampilkan hasil, lalu menampilkan kontrol ke aplikasi. Jika waktu tunggu maksimum untuk panggilan pengambilan terlampaui, panggilan akan memunculkan pengecualian.
- Permintaan asinkron: Layanan URL-fetch memulai permintaan, lalu segera ditampilkan dengan sebuah objek. Aplikasi dapat melakukan tugas lain saat URL sedang diambil. Saat memerlukan hasilnya, aplikasi akan memanggil metode pada objek, yang menunggu permintaan selesai jika perlu, lalu menampilkan hasilnya. Jika ada permintaan URL-fetch yang tertunda saat pengendali permintaan keluar, server aplikasi akan menunggu semua permintaan yang tersisa ditampilkan atau mencapai batas waktu sebelum menampilkan respons kepada pengguna.
Koneksi aman dan HTTPS
Aplikasi Anda dapat mengambil URL secara aman menggunakan HTTPS untuk terhubung ke server yang aman. Data permintaan dan respons dikirimkan melalui jaringan dalam bentuk terenkripsi.
Di Python API, proxy Pengambilan URL tidak memvalidasi host yang dihubungi secara default. Anda dapat menambahkan argumen validate_certificate
opsional ke metode
fetch()
untuk mengaktifkan validasi host.
Respons
Jika Anda menggunakan URL Fetch API, perlu diketahui bahwa layanan URL-fetch menampilkan semua data respons, termasuk kode respons, header, dan isi.
Secara default, jika layanan URL-fetch menerima respons dengan kode pengalihan, layanan akan mengikuti pengalihan. Layanan akan menindaklanjuti hingga lima respons pengalihan, lalu menampilkan resource akhir. Anda dapat menginstruksikan layanan URL-fetch agar tidak mengikuti pengalihan dan menampilkan respons pengalihan ke aplikasi.
Menggunakan URL-fetch di server pengembangan
Saat aplikasi Anda berjalan di server pengembangan App Engine di komputer, panggilan ke layanan URL-fetch akan ditangani secara lokal. Server pengembangan mengambil URL dengan menghubungi host jarak jauh langsung dari komputer Anda menggunakan konfigurasi jaringan apa pun yang digunakan komputer Anda untuk mengakses Internet.
Saat menguji fitur aplikasi yang mengambil URL, pastikan komputer Anda dapat mengakses host jarak jauh.
Kuota dan batas untuk URL-fetch
Untuk mengetahui informasi tentang kuota layanan URL-fetch, lihat Kuota. Untuk melihat penggunaan kuota aplikasi Anda saat ini, buka halaman Detail Kuota di konsol Google Cloud.
Selain itu, batas berikut berlaku untuk penggunaan layanan URL-fetch:
Batas | Jumlah |
---|---|
Ukuran permintaan | 10 megabyte |
Ukuran header permintaan | 16 KB (Perhatikan bahwa ini membatasi panjang maksimum URL yang dapat ditentukan dalam header) |
Ukuran respons | 32 megabyte |
Langkah berikutnya
Jalankan contoh kode dan dapatkan panduan tentang cara mengajukan permintaan dari aplikasi Anda dalam Menerbitkan Permintaan HTTP(S).