GET i POST zahtjevi pomoću Pythona

GET i POST zahtjevi pomoću Pythona

Ovaj post govori o dvije HTTP (Hypertext Transfer Protocol) metode zahtjeva  GET i POST zahtjevi u Pythonu i njihovoj implementaciji u Pythonu. 

Što je HTTP?  

HTTP je skup protokola dizajniranih da omoguće komunikaciju između klijenata i poslužitelja. Radi kao protokol zahtjev-odgovor između klijenta i poslužitelja. Web preglednik može biti klijent, a aplikacija na računalu koje ugošćuje web stranicu može biti poslužitelj. Dakle, za traženje odgovora od poslužitelja postoje uglavnom dvije metode:

  1. DOBITI : Za traženje podataka s poslužitelja.
  2. POST : Za slanje podataka za obradu na poslužitelj.

Ovdje je jednostavan dijagram koji objašnjava osnovni koncept GET i POST metoda.

GET i POST zahtjevi pomoću Pythona 

 Sada za upućivanje HTTP zahtjeva Piton možemo koristiti nekoliko HTTP biblioteka kao što su:

Najelegantnija i najjednostavnija od gore navedenih biblioteka je Zahtjevi. U ovom ćemo članku koristiti biblioteku zahtjeva. Za preuzimanje i instaliranje biblioteke zahtjeva upotrijebite sljedeću naredbu:

 pip install requests  

Izrada zahtjeva za dobivanje

Gornji primjer pronalazi zemljopisnu širinu, dužinu i formatiranu adresu dane lokacije slanjem GET zahtjeva API-ju za Google karte. An API (Aplikacijsko programsko sučelje) omogućuje vam pristup internim značajkama programa na ograničen način. I u većini slučajeva navedeni podaci su unutra JSON (JavaScript Object Notation) formatu (koji je implementiran kao objekti rječnika u Pythonu!).

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

Izlaz:

GET i POST zahtjevi pomoću Pythona

Važne točke za zaključivanje:

 PARAMS = {'address':location}  

URL za GET zahtjev općenito sa sobom nosi neke parametre. Za biblioteku zahtjeva parametri se mogu definirati kao rječnik. Ti se parametri kasnije analiziraju i dodaju u osnovni URL ili krajnju točku API-ja. Da biste razumjeli ulogu parametra pokušajte ispisati r.url nakon što se kreira objekt odgovora. Vidjet ćete nešto poput ovoga:

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

Ovo je stvarni URL na kojem je postavljen GET zahtjev

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

Ovdje stvaramo objekt odgovora 'r' koji će pohraniti zahtjev-odgovor. Koristimo requests.get() metodu jer šaljemo GET zahtjev. Dva argumenta koja prosljeđujemo su URL i rječnik parametara.

 data = r.json()  

Kako bismo dohvatili podatke iz objekta odgovora, moramo pretvoriti neobrađeni sadržaj odgovora u podatkovnu strukturu tipa JSON. To se postiže korištenjem json() metode. Na kraju izdvajamo tražene informacije raščlanjivanjem objekta tipa JSON.

Izrada POST zahtjeva

Ovaj primjer objašnjava kako zalijepiti svoj izvorni_kod do pastebin.com slanjem POST zahtjeva PASTEBIN API-ju. Prije svega morat ćete generirati API ključ pomoću prijavljivanje ovdje a zatim pristupiti vašem API ključ ovdje.  

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  )   

Važne značajke ovog koda:

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

I ovdje ćemo morati proslijediti neke podatke API poslužitelju. Ove podatke pohranjujemo kao rječnik.

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

Ovdje stvaramo objekt odgovora 'r' koji će pohraniti zahtjev-odgovor. Koristimo requests.post() metodu budući da šaljemo POST zahtjev. Dva argumenta koja prosljeđujemo su URL i rječnik podataka.

 pastebin_url = r.text  

Kao odgovor poslužitelj obrađuje podatke koji su mu poslani i šalje pastebin_URL vašeg izvorni_kod kojima se može jednostavno pristupiti r.tekst.

zahtjevi.post Metoda se može koristiti za mnoge druge zadatke kao što je ispunjavanje i slanje web obrazaca koji se postavljaju na vašu FB vremensku traku pomoću Facebook Graph API-ja itd. 

Evo nekoliko važnih točaka o kojima treba razmisliti:

  • Kada je metoda GET, svi podaci obrasca su kodirani u URL i dodani u akcijski URL kao parametri niza upita. Uz POST obrazac podaci se pojavljuju unutar tijelo poruke HTTP zahtjeva.
  • U GET metodi podaci o parametrima ograničeni su na ono što možemo ubaciti u red zahtjeva (URL). Najsigurnije je koristiti manje od 2K parametara, neki poslužitelji obrađuju do 64K. Nema takvog problema u POST metodi budući da podatke šaljemo u tijelo poruke HTTP zahtjeva, a ne URL-a.
  • Samo su ASCII znakovi dopušteni za slanje podataka u metodi GET. Ne postoji takvo ograničenje u POST metodi.
  • GET je manje siguran u usporedbi s POST-om jer su poslani podaci dio URL-a. Stoga se metoda GET ne bi trebala koristiti pri slanju lozinki ili drugih osjetljivih informacija.
Napravi kviz