GET a POST požiadavky pomocou Pythonu

GET a POST požiadavky pomocou Pythonu

Tento príspevok pojednáva o dvoch metódach požiadaviek HTTP (Hypertext Transfer Protocol)  Žiadosti GET a POST v Pythone a ich implementácii v Pythone. 

Čo je HTTP?  

HTTP je sada protokolov navrhnutých na umožnenie komunikácie medzi klientmi a servermi. Funguje ako protokol žiadosť-odpoveď medzi klientom a serverom. Klientom môže byť webový prehliadač a serverom môže byť aplikácia v počítači, ktorý je hostiteľom webovej stránky. Takže na vyžiadanie odpovede zo servera existujú hlavne dva spôsoby:

  1. GET : Na vyžiadanie údajov zo servera.
  2. POST : Na odoslanie údajov na spracovanie na server.

Tu je jednoduchý diagram, ktorý vysvetľuje základný koncept metód GET a POST.

Žiadosti GET a POST pomocou Pythonu 

 Teraz vytvorte požiadavky HTTP Python môžeme použiť niekoľko HTTP knižníc ako:

Najelegantnejšou a najjednoduchšou z vyššie uvedených knižníc sú požiadavky. V tomto článku budeme používať knižnicu žiadostí. Na stiahnutie a inštaláciu knižnice požiadaviek použite nasledujúci príkaz:

 pip install requests  

Podanie žiadosti o získanie

Vyššie uvedený príklad nájde zemepisnú šírku, dĺžku a formátovanú adresu daného miesta odoslaním požiadavky GET do rozhrania Google Maps API. An API (Application Programming Interface) vám umožňuje obmedzený prístup k interným funkciám programu. A vo väčšine prípadov sú poskytnuté údaje v JSON (JavaScript Object Notation) formát (ktorý je implementovaný ako objekty slovníka v Pythone!).

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  ))   

výstup:

GET a POST požiadavky pomocou Pythonu

Dôležité body, ktoré treba vyvodiť:

 PARAMS = {'address':location}  

Adresa URL pre požiadavku GET vo všeobecnosti nesie so sebou niektoré parametre. Pre požiadavky môžu byť parametre knižnice definované ako slovník. Tieto parametre sa neskôr analyzujú a pridajú do základnej adresy URL alebo do koncového bodu rozhrania API. Aby ste pochopili úlohu parametra, skúste ho vytlačiť r.url po vytvorení objektu odpovede. Uvidíte niečo takéto:

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

Toto je skutočná adresa URL, na ktorej sa odošle požiadavka GET

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

Tu vytvoríme objekt odpovede 'r', ktorý uloží žiadosť-odpoveď. Používame metódu request.get(), pretože posielame požiadavku GET. Dva argumenty, ktoré odovzdávame, sú URL a slovník parametrov.

 data = r.json()  

Teraz, aby sme mohli získať údaje z objektu odpovede, musíme konvertovať nespracovaný obsah odpovede na dátovú štruktúru typu JSON. To sa dosiahne pomocou metódy json(). Nakoniec extrahujeme požadované informácie analýzou objektu typu JSON.

Podanie žiadosti POST

Tento príklad vysvetľuje, ako vložiť váš zdrojový_kód do pastebin.com odoslaním požiadavky POST do API PASTEBIN. Najprv budete musieť vygenerovať kľúč API registrácia tu a potom prístup k vášmu API kľúč tu.  

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  )   

Dôležité vlastnosti tohto kódu:

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

Tu opäť budeme musieť odovzdať nejaké údaje na server API. Tieto údaje uchovávame ako slovník.

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

Tu vytvoríme objekt odpovede 'r', ktorý uloží žiadosť-odpoveď. Používame metódu request.post(), pretože posielame požiadavku POST. Dva argumenty, ktoré odovzdávame, sú URL a dátový slovník.

 pastebin_url = r.text  

Ako odpoveď server spracuje údaje, ktoré mu boli odoslané, a odošle váš pastebin_URL zdrojový_kód ku ktorým sa dá jednoducho pristupovať r.text.

žiadosti.post metóda sa dá použiť na mnoho ďalších úloh, ako aj na vypĺňanie a odosielanie webových formulárov na časovej osi FB pomocou rozhrania Facebook Graph API atď. 

Tu je niekoľko dôležitých bodov na zamyslenie:

  • Keď je metóda GET, všetky údaje formulára sa zakódujú do adresy URL a pridajú sa k nej akcie URL ako parametre reťazca dopytu. S formulárom POST sa údaje objavia v rámci telo správy HTTP požiadavky.
  • V metóde GET sú údaje o parametroch obmedzené na to, čo môžeme vložiť do riadku požiadavky (URL). Najbezpečnejšie je použiť menej ako 2 000 parametrov, niektoré servery spracovávajú až 64 000 parametrov. Pri metóde POST takýto problém nie je, keďže údaje odosielame v telo správy HTTP požiadavky, nie URL.
  • Na odosielanie údajov metódou GET sú povolené iba znaky ASCII. V metóde POST takéto obmedzenie neexistuje.
  • GET je v porovnaní s POST menej bezpečný, pretože odoslané údaje sú súčasťou adresy URL. Metóda GET by sa teda nemala používať pri odosielaní hesiel alebo iných citlivých informácií.
Vytvoriť kvíz