logo

Sol·licituds GET i POST mitjançant Python

En aquesta publicació es parla de dos mètodes de sol·licitud HTTP (protocol de transferència d'hipertext) : sol·licituds GET i POST a Python i la seva implementació a Python. 

Què és HTTP?  

HTTP és un conjunt de protocols dissenyats per permetre la comunicació entre clients i servidors. Funciona com un protocol de petició-resposta entre un client i un servidor. Un navegador web pot ser el client i una aplicació en un ordinador que allotja un lloc web pot ser el servidor. Per tant, per sol·licitar una resposta al servidor hi ha principalment dos mètodes:

  1. OBTENIR : Per sol·licitar dades al servidor.
  2. PUBLICACIÓ : Per enviar dades per ser processades al servidor.

Aquí teniu un diagrama senzill que explica el concepte bàsic dels mètodes GET i POST.



Sol·licituds GET i POST mitjançant Python' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 Ara per fer sol·licituds HTTP Python podem utilitzar diverses biblioteques HTTP com:

La més elegant i senzilla de les biblioteques esmentades anteriorment és Requests. Utilitzarem la biblioteca de sol·licituds en aquest article. Per descarregar i instal·lar la biblioteca de sol·licituds, utilitzeu l'ordre següent:

pip install requests

Realització d'una sol·licitud Get

L'exemple anterior troba la latitud, la longitud i l'adreça amb format d'una ubicació determinada enviant una sol·licitud GET a l'API de Google Maps. An API (Interfície de programació d'aplicacions) us permet accedir a les funcions internes d'un programa de manera limitada. I en la majoria dels casos, les dades proporcionades estan a JSON (notació d'objectes JavaScript) format (que s'implementa com a objectes de diccionari a 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)) 

Sortida:

Sol·licituds GET i POST mitjançant Python

Aspectes importants a inferir:

PARAMS = {'address':location}

L'URL d'una sol·licitud GET generalment inclou alguns paràmetres. Per a les sol·licituds, els paràmetres de la biblioteca es poden definir com a diccionari. Aquests paràmetres s'analitzen posteriorment i s'afegeixen a l'URL base o al punt final de l'API. Per entendre el paper del paràmetre, intenteu imprimir r.url després de crear l'objecte de resposta. Veureu alguna cosa com això:

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

Aquest és l'URL real on es fa la sol·licitud GET

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

Aquí creem un objecte de resposta "r" que emmagatzemarà la sol·licitud-resposta. Utilitzem el mètode requests.get() ja que estem enviant una sol·licitud GET. Els dos arguments que passem són URL i el diccionari de paràmetres.

data = r.json()

Ara, per tal de recuperar les dades de l'objecte de resposta, hem de convertir el contingut de la resposta en brut en una estructura de dades de tipus JSON. Això s'aconsegueix utilitzant el mètode json(). Finalment, extreu la informació necessària analitzant l'objecte de tipus JSON.

Realització d'una sol·licitud POST

Aquest exemple explica com enganxar el vostre codi_font a pastebin.com enviant una sol·licitud POST a l'API PASTEBIN. Primer de tot, haureu de generar una clau API per inscriure's aquí i després accedir al vostre Clau de l'API aquí.  

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) 

Característiques importants d'aquest codi:

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

Aquí de nou haurem de passar algunes dades al servidor de l'API. Emmagatzemem aquestes dades com a diccionari.

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

Aquí creem un objecte de resposta "r" que emmagatzemarà la sol·licitud-resposta. Utilitzem el mètode requests.post() ja que estem enviant una sol·licitud POST. Els dos arguments que passem són l'URL i el diccionari de dades.

pastebin_url = r.text

En resposta, el servidor processa les dades que se li envien i envia el pastebin_URL del vostre codi_font a la qual es pot accedir simplement r.text.

peticions.post El mètode es pot utilitzar per a moltes altres tasques, com ara omplir i enviar els formularis web que es publiquen a la vostra línia de temps de FB mitjançant l'API de Facebook Graph, etc. 

Aquí teniu alguns punts importants sobre els quals cal reflexionar:

  • Quan el mètode és GET, totes les dades del formulari es codifiquen a l'URL i s'adjunten al fitxer acció URL com a paràmetres de cadena de consulta. Amb les dades del formulari POST apareixen dins del cos del missatge de la sol·licitud HTTP.
  • En el mètode GET, les dades del paràmetre es limiten al que podem introduir a la línia de sol·licitud (URL). El més segur és utilitzar menys de 2K de paràmetres alguns servidors gestionen fins a 64K. No hi ha cap problema amb el mètode POST, ja que enviem dades al cos del missatge de la sol·licitud HTTP no l'URL.
  • Només es permeten caràcters ASCII perquè les dades s'enviïn amb el mètode GET. No hi ha aquesta restricció en el mètode POST.
  • GET és menys segur en comparació amb POST perquè les dades enviades formen part de l'URL. Per tant, el mètode GET no s'ha d'utilitzar quan s'envien contrasenyes o altra informació sensible.
Crea un qüestionari