Menerbitkan Permintaan HTTP(S)

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.

Untuk mengetahui detail tentang batas ukuran permintaan dan header mana yang dikirim dalam permintaan Fetch URL, lihat Permintaan Keluar.

Memberikan permintaan HTTP

Untuk mengeluarkan permintaan HTTP keluar, gunakan paket http seperti biasa, tetapi buat klien menggunakan urlfetch.Client. urlfetch.Client menampilkan *http.Client yang menggunakan urlfetch.Transport, yang merupakan implementasi antarmuka http.RoundTripper yang membuat permintaan menggunakan URL Fetch API.

Cuplikan berikut menunjukkan cara melakukan permintaan GET HTTP dasar:

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/urlfetch"
)

func handler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	client := urlfetch.Client(ctx)
	resp, err := client.Get("https://www.google.com/")
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	fmt.Fprintf(w, "HTTP GET returned status %v", resp.Status)
}

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 Fetch URL agar tidak mengikuti pengalihan, tetapkan kolom CheckRedirect dari http.Client yang ditampilkan dari urlfetch paket untuk menampilkan http.ErrUseLastResponse. Hal ini berlaku untuk appengine/urlfetch dan appengine/v2/urlfetch. Contoh:

client := urlfetch.Client(ctx)
client.CheckRedirect = func(*http.Request, []*http.Request) error {
  return http.ErrUseLastResponse
}

Memberikan permintaan HTTPS

Di Go API, Anda tidak perlu mengamankan permintaan secara eksplisit. Layanan Fetch URL yang mendasarinya memvalidasi sertifikat host yang dihubungi secara default, dan menolak permintaan jika sertifikat tidak cocok.

Menonaktifkan validasi sertifikat host

Untuk menonaktifkan validasi sertifikat host otomatis, Anda dapat membuat Transport secara manual dan menetapkan AllowInvalidServerCertificate ke true.

Mengeluarkan permintaan ke aplikasi App Engine lain

Saat menerbitkan permintaan ke aplikasi App Engine lain, aplikasi App Engine Anda harus 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 selanjutnya

Pelajari layanan URL-Fetch, seperti header yang dikirim dalam permintaan URL Fetch di Permintaan Keluar.