URL-fetch untuk layanan paket lama

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). Untuk melihat konten paket urlfetch, lihat referensi paket urlfetch.

Permintaan

App Engine menggunakan layanan URL-fetch untuk membuat permintaan keluar. Di Go, paket urlfetch menyediakan urlfetch.Transport, sebuah implementasi antarmuka http.RoundTripper yang membuat permintaan menggunakan infrastruktur App Engine.

Minta 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)", dengan APPID yang merupakan ID aplikasi Anda.
  • X-Appengine-Inbound-Appid. Header ini tidak dapat dimodifikasi, dan akan ditambahkan secara otomatis jika permintaan dikirim melalui layanan URL-fetch.

Waktu tunggu permintaan

Anda dapat menetapkan batas waktu atau waktu tunggu untuk permintaan. Secara default, waktu tunggu untuk permintaan adalah 60 detik. Batas waktu maksimum adalah 60 detik untuk permintaan HTTP(S) serta 60 detik untuk permintaan task queue dan cron job.

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 Go API, proxy Pengambilan URL memvalidasi host yang dihubungi secara default. Perilaku ini memungkinkan API mendeteksi serangan man-in-the-middle antara App Engine dan host jarak jauh saat menggunakan HTTPS.

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.

Menggunakan Pengambilan URL 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.

Buka halaman Detail Kuota

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
Batas waktu maksimum (pengendali permintaan) 60 detik
Batas waktu maksimum (Task Queue dan pengendali cron job) 60 detik

Langkah selanjutnya

Jalankan contoh kode dan dapatkan panduan tentang cara mengajukan permintaan dari aplikasi Anda dalam Menerbitkan Permintaan HTTP(S).