logo

GAUTI ir POST užklausas naudodami Python

Šiame įraše aptariami du HTTP (Hypertext Transfer Protocol) užklausų metodai  GET ir POST užklausos sistemoje Python ir jų įgyvendinimas „Python“. 

Kas yra HTTP?  

HTTP yra protokolų rinkinys, skirtas užtikrinti ryšį tarp klientų ir serverių. Jis veikia kaip užklausų-atsakymų protokolas tarp kliento ir serverio. Žiniatinklio naršyklė gali būti klientas, o programa kompiuteryje, kuriame yra svetainė, gali būti serveris. Taigi, norėdami paprašyti atsakymo iš serverio, dažniausiai yra du būdai:

  1. GAUTI : prašyti duomenų iš serverio.
  2. PAST : pateikti duomenis, kurie bus apdoroti į serverį.

Čia yra paprasta diagrama, paaiškinanti pagrindinę GET ir POST metodų koncepciją.



GAUTI ir POST užklausas naudodami Python' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 Dabar pateikti HTTP užklausas Python galime naudoti kelias HTTP bibliotekas, tokias kaip:

Elegantiškiausia ir paprasčiausia iš aukščiau išvardytų bibliotekų yra užklausos. Šiame straipsnyje naudosime užklausų biblioteką. Norėdami atsisiųsti ir įdiegti užklausų biblioteką, naudokite šią komandą:

pip install requests

Gauti užklausą

Aukščiau pateiktame pavyzdyje randama tam tikros vietos platuma, ilguma ir suformatuotas adresas, siunčiant GET užklausą į „Google“ žemėlapių API. An API (Application Programming Interface) leidžia ribotai pasiekti vidines programos funkcijas. Ir daugeliu atvejų pateikti duomenys yra JSON („JavaScript“ objektų žymėjimas) formatu (kuris „Python“ įdiegtas kaip žodyno objektai!).

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

Išvestis:

GAUTI ir POST užklausas naudodami Python

Svarbūs punktai, kuriuos reikia padaryti išvadą:

PARAMS = {'address':location}

GET užklausos URL paprastai turi tam tikrų parametrų. Užklausoms bibliotekos parametrai gali būti apibrėžti kaip žodynas. Šie parametrai vėliau išanalizuojami ir pridedami prie pagrindinio URL arba API galutinio taško. Norėdami suprasti parametro vaidmenį, pabandykite spausdinti r.url sukūrus atsako objektą. Pamatysite kažką panašaus:

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

Tai tikrasis URL, kuriuo pateikiama GET užklausa

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

Čia sukuriame atsakymo objektą „r“, kuriame bus saugomas užklausa-atsakymas. Mes naudojame requests.get() metodą, nes siunčiame GET užklausą. Du argumentai, kuriuos perduodame, yra URL ir parametrų žodynas.

data = r.json()

Dabar, norėdami gauti duomenis iš atsakymo objekto, turime konvertuoti neapdoroto atsakymo turinį į JSON tipo duomenų struktūrą. Tai pasiekiama naudojant json() metodą. Galiausiai išgauname reikiamą informaciją analizuodami JSON tipo objektą.

POST užklausos pateikimas

Šiame pavyzdyje paaiškinama, kaip įklijuoti šaltinio_kodas į pastebin.com išsiųsdami POST užklausą į PASTEBIN API. Pirmiausia turėsite sugeneruoti API raktą registruojantis čia ir tada pasiekti savo API raktas čia.  

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) 

Svarbios šio kodo savybės:

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

Čia vėl turėsime perduoti kai kuriuos duomenis API serveriui. Šiuos duomenis saugome kaip žodyną.

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

Čia sukuriame atsakymo objektą „r“, kuriame bus saugomas užklausa-atsakymas. Mes naudojame requests.post() metodą, nes siunčiame POST užklausą. Du argumentai, kuriuos perduodame, yra URL ir duomenų žodynas.

pastebin_url = r.text

Atsakydamas serveris apdoroja jam atsiųstus duomenis ir išsiunčia jūsų pastebin_URL šaltinio_kodas kurią galima tiesiog pasiekti r.tekstas.

prašymai.post metodas gali būti naudojamas daugeliui kitų užduočių, taip pat, pavyzdžiui, pildant ir pateikiant žiniatinklio formas, skelbiamas jūsų FB laiko juostoje, naudojant Facebook Graph API ir kt. 

Štai keletas svarbių punktų, į kuriuos reikia atsižvelgti:

  • Kai metodas yra GET, visi formos duomenys užkoduojami į URL ir pridedami prie veiksmas URL kaip užklausos eilutės parametrai. Naudojant POST formą, duomenys rodomi pranešimo turinys HTTP užklausos.
  • Taikant GET metodą, parametrų duomenys ribojami iki to, ką galime įterpti į užklausos eilutę (URL). Saugiausia naudoti mažiau nei 2 000 parametrų, kai kurie serveriai apdoroja iki 64 000. POST metodu tokios problemos nėra, nes siunčiame duomenis pranešimo turinys HTTP užklausos, o ne URL.
  • Duomenims siųsti naudojant GET metodą leidžiami tik ASCII simboliai. POST metodu tokio apribojimo nėra.
  • GET yra mažiau saugus, palyginti su POST, nes siunčiami duomenys yra URL dalis. Taigi GET metodas neturėtų būti naudojamas siunčiant slaptažodžius ar kitą slaptą informaciją.
Sukurti viktoriną