API Capabilities pour les anciens services groupés

Avec l'API Capabilities, votre application peut détecter les pannes et les temps d'arrêt planifiés pour des fonctionnalités d'API spécifiques. Vous pouvez utiliser cette API pour réduire les temps d'arrêt de votre application en détectant le moment où une fonctionnalité n'est pas disponible, puis en l'ignorant. Pour afficher le contenu du package capability, consultez la documentation de référence sur le package capability. .

Par exemple, si vous utilisez l'API Datastore, vous pouvez vous servir de l'API Capabilities pour détecter à quel moment l'API Datastore n'est pas disponible et signaler une erreur à l'utilisateur :

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 ...
}

Vous pouvez interroger séparément la disponibilité des opérations de lecture et d'écriture dans Datastore. L'exemple suivant montre comment procéder et comment envoyer un message aux utilisateurs lors des temps d'arrêt :

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.
	}

}

Utiliser l'API Capabilities en Go 1.11

La fonction capability.Enabled renvoie la valeur "true" si l'API et la fonctionnalité fournies sont disponibles. Vous devez transmettre un nom de fonctionnalité (tel que "write") ou le caractère générique "*" pour interroger toutes les fonctionnalités de l'API.

Fonctionnalités proposées

L'API propose actuellement les fonctionnalités suivantes :

Capacité Arguments pour Enabled
Disponibilité du Blobstore "blobstore", "*"
Lectures dans le datastore "datastore_v3", "*"
Écritures dans Datastore "datastore_v3", "write"
Disponibilité du service Mail "mail", "*"
Disponibilité du service Memcache "memcache", "*"
Disponibilité du service Task Queue "taskqueue", "*"
Disponibilité du service URL Fetch "urlfetch", "*"