logo

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

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