Como emitir solicitações HTTP(S)

ID da região

O REGION_ID é um código abreviado que o Google atribui com base na região que você selecionou ao criar o aplicativo. O código não corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes aos códigos de país e estado geralmente usados. Para apps criados após fevereiro de 2020, o REGION_ID.r está incluído nos URLs do App Engine. Para apps existentes criados antes dessa data, o ID da região é opcional no URL.

Saiba mais sobre IDs de região.

Esta página descreve como emitir solicitações HTTP(S) do seu aplicativo App Engine.

Para mais detalhes sobre os limites de tamanho de solicitação e quais cabeçalhos são enviados em uma solicitação de busca de URL, consulte Solicitações de saída.

Emitir uma solicitação HTTP

Para emitir uma solicitação HTTP de saída, use o pacote http como de costume, mas crie o cliente usando urlfetch.Client. urlfetch.Client retorna um *http.Client que usa urlfetch.Transport, que é uma implementação da interface http.RoundTripper que faz solicitações usando a API URL Fetch.

O snippet a seguir demonstra como executar uma solicitação básica HTTP GET:

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

Desativar redirecionamentos

Se você estiver usando a busca de URL, o serviço subjacente de busca de URL seguirá até cinco redirecionamentos por padrão. Esses redirecionamentos podem encaminhar informações confidenciais, como cabeçalhos de autorização, para o destino redirecionado. Se o aplicativo não exigir redirecionamentos HTTP, é recomendável que você os desative.

Para instruir o serviço de busca de URL a não seguir redirecionamentos, defina o campo CheckRedirect do http.Client retornado do pacote urlfetch para retornar http.ErrUseLastResponse. Isso se aplica a appengine/urlfetch e appengine/v2/urlfetch. Exemplo:

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

Emitir uma solicitação HTTPS

Por padrão, o serviço de busca de URL subjacente valida o certificado do host que ele contata e rejeita solicitações se o certificado não corresponder. Não é necessário proteger explicitamente sua solicitação.

Desativar a validação do certificado do host

Para desativar a validação automática do certificado do host, crie manualmente um Transporte e defina AllowInvalidServerCertificate como true.

Emitir uma solicitação para outro app do App Engine

Ao emitir uma solicitação para outro aplicativo do App Engine, ele precisa declarar a identidade dele adicionando o cabeçalho X-Appengine-Inbound-Appid à solicitação. Se você instruir o serviço de busca de URL a não seguir redirecionamentos, o App Engine adicionará esse cabeçalho às solicitações automaticamente.

Consulte Como desativar redirecionamentos para orientação sobre como desativar redirecionamentos.

A seguir

Para saber mais sobre o serviço de busca de URL, como os cabeçalhos que são enviados em uma solicitação de busca de URL, consulte Solicitações de saída.