Como emitir solicitações HTTP(S)

ID de 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.

Como emitir solicitações 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)
}

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

Como emitir solicitações HTTPS

Na Go API, você não precisa proteger explicitamente sua solicitação. O serviço de busca de URL subjacente valida o certificado do host em que está entrando em contato por padrão e rejeita solicitações se o certificado não corresponder.

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

Como emitir solicitações para outro aplicativo 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.