ID de región
REGION_ID es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información sobre los IDs de región.
En esta página, se describe cómo emitir solicitudes HTTP(S) desde tu app de App Engine con el servicio de recuperación de URLs para entornos de ejecución de segunda generación.
Antes de seguir las instrucciones de esta página, te recomendamos que uses soluciones de lenguaje idiomático para emitir solicitudes HTTP(S) antes de usar el servicio de recuperación de URLs. El caso de uso principal para usar la recuperación de URL es cuando deseas emitir solicitudes HTTP(S) a otra app de App Engine y confirmar la identidad de tu app en esa solicitud.
Para obtener más información sobre cuáles son los límites de tamaño de las solicitudes y qué encabezados se envían en una solicitud de recuperación de URL, consulta Solicitudes salientes.
Emite una solicitud HTTP
Para usar el servicio de recuperación de URL para emitir solicitudes HTTP(S) salientes,
llama
al paquete urlfetch.
Para emitir una solicitud HTTP saliente, usa el paquete http como de costumbre, pero crea tu cliente mediante urlfetch.Client. urlfetch.Client muestra un *http.Client que usa urlfetch.Transport y es una implementación de la interfaz http.RoundTripper que realiza solicitudes mediante las la API de recuperación de URL.
En el siguiente fragmento, se muestra cómo realizar una solicitud HTTP GET básica:
import (
"fmt"
"net/http"
"google.golang.org/appengine/v2"
"google.golang.org/appengine/v2/urlfetch"
)
func handler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
client := urlfetch.Client(ctx)
resp, err := client.Get("http://www.google.com/")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer resp.Body.Close()
fmt.Fprintf(w, "HTTP GET returned status %v", resp.Status)
}
Inhabilita los redireccionamientos
Si usas la recuperación de URL, el servicio de recuperación de URL subyacente sigue hasta cinco redireccionamientos de forma predeterminada. Estos redireccionamientos podrían reenviar información sensible, como los encabezados de autorización, al destino redireccionado. Si tu app no requiere redireccionamientos HTTP, se recomienda que los inhabilites.
Para indicarle al servicio de recuperación de URL que no siga los redireccionamientos, configura el campo CheckRedirect de http.Client que mostró el paquete urlfetch para que muestre http.ErrUseLastResponse.
Esto se aplica a appengine/urlfetch y appengine/v2/urlfetch. Por ejemplo:
client := urlfetch.Client(ctx)
client.CheckRedirect = func(*http.Request, []*http.Request) error {
return http.ErrUseLastResponse
}
Emite una solicitud HTTPS
De forma predeterminada, el servicio de recuperación de URL subyacente valida el certificado del host que contacta y rechaza las solicitudes si el certificado no coincide. No tienes que proteger tu solicitud de forma explícita.
Inhabilita la validación del certificado del host
Para inhabilitar la validación automática del certificado del host, puedes crear manualmente un
Transporte y configurar
AllowInvalidServerCertificate como true.
Cómo emitir una solicitud dirigida a otra aplicación de App Engine
Cuando usas la recuperación de URL para emitir una solicitud a otra app de App Engine, tu app puede confirmar su identidad agregando el encabezado X-Appengine-Inbound-Appid a la solicitud.
Si le indicas al servicio de recuperación de URL que no siga los redireccionamientos, App Engine agregará este encabezado a las solicitudes de manera automática. Consulta Inhabilita redireccionamientos para obtener más orientación.
¿Qué sigue?
Obtén más información sobre el servicio de recuperación de URL, como los encabezados que se envían en una solicitud de recuperación de URL, en Solicitudes de salida.