Solicitações de saída

Nesta página, você saberá como os aplicativos do App Engine usam o serviço de busca de URL para emitir solicitações HTTP e HTTPS e receber respostas. Para ver amostras de código que demonstram como emitir solicitações HTTP e HTTPS do aplicativo App Engine, consulte Como emitir solicitações HTTP(S).

Solicitações

O App Engine usa o serviço de busca de URL para emitir solicitações de saída. No Python, é possível usar as bibliotecas httplib, urllib e urllib2 para criar solicitações HTTP. Em um aplicativo do App Engine, cada biblioteca realizará essas solicitações usando o serviço de busca de URL. Também é possível usar diretamente a biblioteca urlfetch.

Protocolos de solicitação

Um aplicativo pode buscar um URL usando HTTP ou HTTPS. O protocolo que precisa ser usado é inferido observando-se o protocolo no URL de destino.

O URL buscado pode usar qualquer número de porta nestes intervalos:

  • 80-90
  • 440-450
  • 1024-65535

Se a porta não for mencionada no URL, ela estará implícita no protocolo. As solicitações HTTP ocorrem na porta 80 e as HTTPS ocorrem na porta 443.

Métodos de solicitação

Se emitir solicitações por meio do serviço de busca de URL, você poderá usar qualquer um dos seguintes métodos HTTP:

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH

Uma solicitação pode incluir cabeçalhos HTTP e, para solicitações POST, PUT e PATCH, um payload.

Proxy das solicitações

O serviço de busca de URL usa um proxy compatível com HTTP/1.1 para buscar o resultado.

Para evitar que um aplicativo cause uma recursão interminável de solicitações, não é permitido que um gerenciador de solicitações busque o próprio URL. Ainda é possível causar uma recursão interminável com outros meios, por isso tenha cuidado se o aplicativo puder ser usado para buscar solicitações de URLs fornecidas pelo usuário.

Cabeçalhos das solicitações

O aplicativo pode configurar cabeçalhos HTTP para a solicitação de saída.

Ao enviar uma solicitação HTTP POST, se um cabeçalho Content-Type não for definido explicitamente, ele será definido como x-www-form-urlencoded. Esse é o tipo de conteúdo usado pelos formulários da Web.

Por motivos de segurança, os cabeçalhos abaixo não podem ser modificados pelo aplicativo:

  • Content-Length
  • Host
  • Vary
  • Via
  • X-Appengine-Inbound-Appid
  • X-Forwarded-For
  • X-ProxyUser-IP

Esses cabeçalhos são definidos com valores precisos pelo App Engine, conforme apropriado. Por exemplo, o App Engine calcula o cabeçalho Content-Length pelos dados da solicitação e o adiciona a ela antes do envio.

Os seguintes cabeçalhos indicam o ID do aplicativo solicitante:

  • User-Agent. Este cabeçalho pode ser modificado, mas o App Engine anexará uma string de identificação para permitir que os servidores identifiquem as solicitações do App Engine. A string anexada tem o formato "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)", em que APPID é o identificador do seu app.
  • X-Appengine-Inbound-Appid. Este cabeçalho não pode ser modificado. Ele será adicionado automaticamente se a solicitação tiver sido enviada por meio do serviço de busca de URL quando o seguinte parâmetro de redirecionamento estiver configurado como False.

Tempo limite das solicitações

Você pode definir um prazo ou um tempo limite para uma solicitação. Por padrão, o tempo limite é de cinco segundos.

É possível enviar solicitações síncronas e assíncronas. O seguinte comportamento se aplica à API URL Fetch:

  • Solicitações síncronas: a chamada de busca aguarda até que o host remoto retorne um resultado e, em seguida, retorna o controle para o aplicativo. Se o tempo de espera máximo para a chamada de busca for excedido, a chamada gerará uma exceção.
  • Solicitações assíncronas: o serviço de busca de URL inicia a solicitação e retorna imediatamente um objeto. O aplicativo pode realizar outras tarefas durante a busca do URL. Quando o aplicativo precisa dos resultados, ele chama um método no objeto, que aguarda até que a solicitação seja concluída, se necessário, e depois retorna o resultado. Se alguma solicitação de busca de URL estiver pendente quando o gerenciador de solicitações é encerrado, o servidor de aplicativos espera até que o restante das solicitações retorne ou atinja o prazo antes de retornar uma resposta para o usuário.

Conexões seguras e HTTPS

Seu aplicativo pode buscar um URL de maneira segura por meio do uso do HTTPS para se conectar a servidores seguros. Dados de solicitação e resposta são transmitidos pela rede em formato criptografado.

Na API Python, o proxy de busca de URL não valida o host que está entrando em contato por padrão. É possível adicionar um argumento validate_certificate opcional ao método fetch() para ativar a validação do host.

Respostas

Se você usar a API URL Fetch, o serviço de busca de URL retornará todos os dados de resposta, inclusive a resposta, o código, os cabeçalhos e o corpo.

Por padrão, se o serviço de busca de URL receber uma resposta com um código de redirecionamento, ele acompanhará esse redirecionamento. O serviço acompanhará até cinco respostas de redirecionamento e, em seguida, retornará o recurso final. É possível instruir o serviço de busca de URL para que não siga redirecionamentos e, em vez disso, retornar uma resposta de redirecionamento para o aplicativo.

Como usar a busca de URL no servidor de desenvolvimento

Quando o aplicativo está em execução no servidor de desenvolvimento do App Engine no computador, as chamadas para o serviço de busca de URL são processadas localmente. O servidor de desenvolvimento busca URLs por meio do contato com hosts remotos diretamente do seu computador usando a configuração de rede do computador para acessar a Internet.

Ao testar os recursos do seu aplicativo que buscam URLs, verifique se o computador pode acessar os hosts remotos.

Cotas e limites para busca de URL

Para informações sobre cotas de serviço de busca de URL, consulte Cotas. É possível visualizar o uso atual da cota do seu aplicativo visitando a guia de detalhes da cota do Console do Google Cloud Platform para o projeto.

Além disso, os seguintes limites aplicam-se ao uso do serviço de busca de URL:

Limite Valor
Tamanho da solicitação 10 megabytes
Tamanho do cabeçalho da solicitação 16 KB (observe que isso limita o comprimento máximo do URL que pode ser especificado no cabeçalho)
Tamanho da resposta 32 megabytes

Próximas etapas

Execute amostras de código e veja as orientações sobre como emitir solicitações a partir do aplicativo em Como emitir solicitações HTTP(S).

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2