logo

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' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 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:%snLongitude:%snFormatted Address:%s' %(latitude longitudeformatted_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