Solicitações GET e POST usando Python

Solicitações GET e POST usando Python

Esta postagem discute dois métodos de solicitação HTTP (Hypertext Transfer Protocol), solicitações GET e POST em Python, e sua implementação em Python. 

O que é HTTP?  

HTTP é um conjunto de protocolos projetados para permitir a comunicação entre clientes e servidores. Funciona como um protocolo de solicitação-resposta entre um cliente e um servidor. Um navegador da web pode ser o cliente e um aplicativo em um computador que hospeda um site pode ser o servidor. Portanto, para solicitar uma resposta do servidor, existem basicamente dois métodos:

  1. PEGAR : Para solicitar dados do servidor.
  2. PUBLICAR : Para enviar dados a serem processados ​​ao servidor.

Aqui está um diagrama simples que explica o conceito básico dos métodos GET e POST.

Solicitações GET e POST usando Python 

 Agora, para fazer solicitações HTTP em Pitão podemos usar várias bibliotecas HTTP como:

A mais elegante e simples das bibliotecas listadas acima é a Requests. Estaremos usando a biblioteca de solicitações neste artigo. Para baixar e instalar a biblioteca Requests use o seguinte comando:

 pip install requests  

Fazendo uma solicitação Get

O exemplo acima encontra a latitude, longitude e o endereço formatado de um determinado local, enviando uma solicitação GET para a API do Google Maps. Um API (Interface de Programação de Aplicativo) permite acessar os recursos internos de um programa de forma limitada. E na maioria dos casos os dados fornecidos estão em JSON (notação de objeto JavaScript) formato (que é implementado como objetos de dicionário em Python!).

Python
   # importing the requests library   import   requests   # api-endpoint   URL   =   'http://maps.googleapis.com/maps/api/geocode/json'   # location given here   location   =   'delhi technological university'   # defining a params dict for the parameters to be sent to the API   PARAMS   =   {  'address'  :  location  }   # sending get request and saving the response as response object   r   =   requests  .  get  (  url   =   URL     params   =   PARAMS  )   # extracting data in json format   data   =   r  .  json  ()   # extracting latitude longitude and formatted address   # of the first matching location   latitude   =   data  [  'results'  ][  0  ][  'geometry'  ][  'location'  ][  'lat'  ]   longitude   =   data  [  'results'  ][  0  ][  'geometry'  ][  'location'  ][  'lng'  ]   formatted_address   =   data  [  'results'  ][  0  ][  'formatted_address'  ]   # printing the output   print  (  'Latitude:  %s  n  Longitude:  %s  n  Formatted Address:  %s  '   %  (  latitude     longitude    formatted_address  ))   

Saída:

Solicitações GET e POST usando Python

Pontos importantes a inferir:

 PARAMS = {'address':location}  

A URL para uma solicitação GET geralmente carrega alguns parâmetros. Para as solicitações, os parâmetros da biblioteca podem ser definidos como um dicionário. Esses parâmetros são posteriormente analisados ​​e adicionados ao URL base ou ao endpoint da API. Para entender a função do parâmetro tente imprimir r.url depois que o objeto de resposta for criado. Você verá algo assim:

 http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+university  

Este é o URL real no qual a solicitação GET é feita

 r = requests.get(url = URL params = PARAMS)  

Aqui criamos um objeto de resposta 'r' que armazenará a solicitação-resposta. Usamos o método requests.get() porque estamos enviando uma solicitação GET. Os dois argumentos que passamos são URL e o dicionário de parâmetros.

 data = r.json()  

Agora, para recuperar os dados do objeto de resposta, precisamos converter o conteúdo bruto da resposta em uma estrutura de dados do tipo JSON. Isso é conseguido usando o método json(). Finalmente, extraímos as informações necessárias analisando o objeto do tipo JSON.

Fazendo uma solicitação POST

Este exemplo explica como colar seu código_fonte para pastebin. com enviando uma solicitação POST para a API PASTEBIN. Primeiro de tudo, você precisará gerar uma chave API inscrevendo-se aqui e então acessando seu Chave de API aqui.  

Python
   # importing the requests library   import   requests   # defining the api-endpoint   API_ENDPOINT   =   'https://pastebin.com/api/api_post.php'   # your API key here   API_KEY   =   'XXXXXXXXXXXXXXXXX'   # your source code here   source_code   =   '''   print('Hello world!')   a = 1   b = 2   print(a + b)   '''   # data to be sent to api   data   =   {  'api_dev_key'  :   API_KEY     'api_option'  :   'paste'     'api_paste_code'  :   source_code     'api_paste_format'  :   'python'  }   # sending post request and saving response as response object   r   =   requests  .  post  (  url  =  API_ENDPOINT     data  =  data  )   # extracting response text   pastebin_url   =   r  .  text   print  (  'The pastebin URL is:  %s  '   %   pastebin_url  )   

Recursos importantes deste código:

 data = {'api_dev_key':API_KEY   
'api_option':'paste'
'api_paste_code':source_code
'api_paste_format':'python'}

Aqui, novamente, precisaremos passar alguns dados para o servidor API. Armazenamos esses dados como um dicionário.

 r = requests.post(url = API_ENDPOINT data = data)  

Aqui criamos um objeto de resposta 'r' que armazenará a solicitação-resposta. Usamos o método requests.post() porque estamos enviando uma solicitação POST. Os dois argumentos que passamos são a URL e o dicionário de dados.

 pastebin_url = r.text  

Em resposta o servidor processa os dados enviados a ele e envia o pastebin_URL do seu código_fonte que pode ser acessado simplesmente por r.texto.

solicitações.post O método pode ser usado para muitas outras tarefas, bem como preencher e enviar formulários da web postados em sua linha do tempo do FB usando a API Graph do Facebook, etc. 

Aqui estão alguns pontos importantes para refletir:

  • Quando o método é GET, todos os dados do formulário são codificados na URL e anexados ao Ação URL como parâmetros de string de consulta. Com o formulário POST, os dados aparecem dentro do corpo da mensagem da solicitação HTTP.
  • No método GET, os dados do parâmetro são limitados ao que podemos inserir na linha de solicitação (URL). É mais seguro usar menos de 2K de parâmetros, alguns servidores suportam até 64K. Não existe esse problema no método POST, pois enviamos dados no corpo da mensagem da solicitação HTTP, não o URL.
  • Somente caracteres ASCII são permitidos para envio de dados no método GET. Não existe tal restrição no método POST.
  • GET é menos seguro comparado ao POST porque os dados enviados fazem parte da URL. Portanto, o método GET não deve ser usado ao enviar senhas ou outras informações confidenciais.
Criar questionário