Capabilities API untuk paket layanan lama

Dengan Capabilities API, aplikasi Anda dapat mendeteksi pemadaman layanan dan periode nonaktif terjadwal untuk kemampuan API tertentu. Anda dapat menggunakan API ini untuk mengurangi periode nonaktif di aplikasi Anda dengan mendeteksi kapan kemampuan tidak tersedia, lalu mengabaikannya. Untuk melihat isi paket capability, lihat referensi paket capability. .

Misalnya, jika Anda menggunakan Datastore API, Anda dapat menggunakan Capabilities API untuk mendeteksi kapan Datastore API tidak tersedia dan melaporkan kesalahan kepada pengguna:

func handler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	// Check if the Datastore API is available
	if !capability.Enabled(ctx, "datastore_v3", "*") {
		http.Error(w, "This service is currently unavailable.", 503)
		return
	}
	// do Datastore lookup ...
}

Anda dapat secara terpisah membuat kueri ketersediaan pembacaan dan penulisan Datastore. Contoh berikut menunjukkan cara mendeteksi ketersediaan penulisan Datastore dan, selama periode nonaktif, memberikan pesan kepada pengguna:

func checkDatastoreMode(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	// Check if the Datastore service is in read-only mode.
	if !capability.Enabled(ctx, "datastore_v3", "write") {
		// Datastore is in read-only mode.
	}

}

Menggunakan Capabilities API di Go 1.11

Fungsi capability.Enabled mengembalikan nilai benar jika API dan kemampuan yang disediakan tersedia. Anda harus memberi nama kemampuan (seperti "write") atau "*" karakter pengganti untuk membuat kueri semua kemampuan API.

Kemampuan yang didukung

API tersebut saat ini mendukung kemampuan berikut:

Kemampuan Argumen untuk Enabled
Ketersediaan blobstore "blobstore", "*"
Pembacaan Datastore "datastore_v3", "*"
Penulisan Datastore "datastore_v3", "write"
Ketersediaan layanan Email "mail", "*"
Ketersediaan layanan Memcache "memcache", "*"
Ketersediaan layanan Task Queue "taskqueue", "*"
Ketersediaan layanan URL-Fetch "urlfetch", "*"