Émettre des requêtes HTTP(S)

ID de la région

Le REGION_ID est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.

En savoir plus sur les ID de région

Cette page explique comment envoyer des requêtes HTTP(S) à partir de l'application App Engine.

Pour en savoir plus sur les limites de taille des requêtes et les en-têtes envoyés dans une requête de récupération d'URL, consultez la page Requêtes sortantes.

Émettre une requête HTTP

Pour émettre une requête HTTP sortante, utilisez normalement le package http. Vous devez toutefois créer le client avec urlfetch.Client. urlfetch.Client renvoie un objet *http.Client qui utilise urlfetch.Transport, qui est une mise en œuvre de l'interface http.RoundTripper. Cette interface effectue des requêtes à l'aide de l'API URL Fetch.

L'extrait de code ci-dessous montre comment envoyer une requête GET HTTP de base.

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

Désactiver les redirections

Si vous utilisez la récupération d'URL, le service de récupération d'URL sous-jacent suit jusqu'à cinq redirections par défaut. Ces redirections peuvent transférer des informations sensibles, telles que des en-têtes d'autorisation, vers la destination de redirection. Si votre application ne nécessite pas de redirections HTTP, il est recommandé de les désactiver.

Pour indiquer au service de récupération d'URL de ne pas suivre les redirections, définissez le champ CheckRedirect de http.Client renvoyé par le package urlfetch de sorte qu'il renvoie http.ErrUseLastResponse. Cela s'applique à appengine/urlfetch et appengine/v2/urlfetch. Exemple :

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

Émettre une requête HTTPS

Dans l'API Go, vous n'avez pas besoin de sécuriser explicitement votre requête. Le service de récupération d'URL sous-jacent valide le certificat de l'hôte qu'il contacte par défaut et refuse les requêtes si le certificat n'est pas conforme.

Désactiver la validation du certificat de l'hôte

Pour désactiver la validation automatique du certificat de l'hôte, vous pouvez créer manuellement un objet Transport et définir AllowInvalidServerCertificate sur true.

Envoyer une requête à une autre application App Engine

Lors de l'envoi d'une requête à une autre application App Engine, celle-ci doit affirmer son identité en ajoutant l'en-tête X-Appengine-Inbound-Appid à la requête. Si vous indiquez au service de récupération d'URL de ne pas suivre les redirections, App Engine ajoutera automatiquement cet en-tête aux requêtes.

Consultez Désactiver les redirections pour des conseils sur la désactivation des redirections.

Étape suivante

Pour en savoir plus sur le service de récupération d'URL, y compris sur les en-têtes envoyés dans une requête de récupération d'URL, consultez la page Requêtes sortantes.