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.
Nesta página, descrevemos como emitir solicitações HTTP(S) do aplicativo do App Engine usando o serviço de busca de URL para ambientes de execução de segunda geração.
Antes de seguir as instruções nesta página, recomendamos que você use soluções idiomáticas de linguagem para emitir solicitações HTTP(S) antes de usar o serviço de busca de URL. O principal caso de uso para utilizar a busca de URL é quando você quer emitir solicitações HTTP(S) para outro aplicativo do App Engine e declarar a identidade do aplicativo nessa solicitação.
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 usar o serviço de busca de URL para emitir solicitações HTTP(S) de saída,
chame
o urlfetch pacote.
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/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)
}
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 acessa 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 solicitações para outro aplicativo do App Engine
Ao usar a busca de URL para emitir uma solicitação a outro aplicativo do App Engine, seu aplicativo pode 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.