logo

IEGŪT un POST pieprasījumus, izmantojot Python

Šajā rakstā ir apskatītas divas HTTP (hiperteksta pārsūtīšanas protokola) pieprasījumu metodes — GET un POST pieprasījumi pakalpojumā Python un to ieviešana Python. 

Kas ir HTTP?  

HTTP ir protokolu kopums, kas paredzēts, lai nodrošinātu saziņu starp klientiem un serveriem. Tas darbojas kā pieprasījuma-atbildes protokols starp klientu un serveri. Tīmekļa pārlūkprogramma var būt klients, un lietojumprogramma datorā, kurā tiek mitināta vietne, var būt serveris. Tātad, lai pieprasītu atbildi no servera, galvenokārt ir divas metodes:

  1. IEGŪT : lai pieprasītu datus no servera.
  2. POSTĪT : lai iesniegtu serverī apstrādājamos datus.

Šeit ir vienkārša diagramma, kas izskaidro GET un POST metožu pamatjēdzienu.



IEGŪT un POST pieprasījumus, izmantojot Python' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 Tagad, lai veiktu HTTP pieprasījumus Python mēs varam izmantot vairākas HTTP bibliotēkas, piemēram:

Elegantākā un vienkāršākā no iepriekš uzskaitītajām bibliotēkām ir Pieprasījumi. Šajā rakstā mēs izmantosim pieprasījumu bibliotēku. Lai lejupielādētu un instalētu pieprasījumu bibliotēku, izmantojiet šo komandu:

pip install requests

Saņemšanas pieprasījuma noformēšana

Iepriekš minētajā piemērā tiek atrasts noteiktas vietas platuma un garuma grādi un formatētā adrese, nosūtot GET pieprasījumu uz Google Maps API. An API (Lietojumprogrammu interfeiss) ļauj ierobežotā veidā piekļūt programmas iekšējām funkcijām. Un vairumā gadījumu sniegtie dati ir ievadīti JSON (JavaScript objektu apzīmējums) formātā (kas Python ir ieviests kā vārdnīcas objekti!).

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

Izvade:

IEGŪT un POST pieprasījumus, izmantojot Python

Svarīgi secinājumi:

PARAMS = {'address':location}

GET pieprasījuma URL parasti ietver dažus parametrus. Pieprasījumiem bibliotēkas parametrus var definēt kā vārdnīcu. Šie parametri vēlāk tiek parsēti un pievienoti bāzes vietrādim URL vai API galapunktam. Lai saprastu parametra lomu, mēģiniet izdrukāt r.url pēc atbildes objekta izveides. Jūs redzēsit kaut ko līdzīgu šim:

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

Šis ir faktiskais URL, uz kura tiek veikts GET pieprasījums

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

Šeit mēs izveidojam atbildes objektu "r", kas saglabās pieprasījumu-atbildi. Mēs izmantojam requests.get() metodi, jo mēs nosūtām GET pieprasījumu. Divi argumenti, ko mēs nododam, ir URL un parametru vārdnīca.

data = r.json()

Tagad, lai izgūtu datus no atbildes objekta, mums ir jāpārvērš neapstrādāts atbildes saturs JSON tipa datu struktūrā. Tas tiek panākts, izmantojot json() metodi. Visbeidzot, mēs iegūstam nepieciešamo informāciju, parsējot JSON tipa objektu.

POST pieprasījuma veikšana

Šajā piemērā ir paskaidrots, kā ielīmēt savu avota_kods uz pastebin.com nosūtot POST pieprasījumu uz PASTEBIN API. Vispirms jums būs jāģenerē API atslēga pierakstoties šeit un pēc tam piekļūstot jūsu API atslēga šeit.  

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) 

Svarīgas šī koda funkcijas:

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

Šeit atkal vajadzēs nodot dažus datus API serverim. Mēs glabājam šos datus kā vārdnīcu.

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

Šeit mēs izveidojam atbildes objektu "r", kas saglabās pieprasījumu-atbildi. Mēs izmantojam requests.post() metodi, jo mēs nosūtām POST pieprasījumu. Divi argumenti, ko mēs nododam, ir URL un datu vārdnīca.

pastebin_url = r.text

Atbildot uz to, serveris apstrādā tam nosūtītos datus un nosūta jūsu vietnes pastebin_URL avota_kods kurai var vienkārši piekļūt r.text.

pieprasījumi.post metodi var izmantot daudziem citiem uzdevumiem, kā arī, piemēram, tīmekļa veidlapu aizpildīšanai un iesniegšanai, kas tiek publicētas jūsu FB laika skalā, izmantojot Facebook Graph API utt. 

Šeit ir daži svarīgi punkti, kas jāapsver:

  • Ja metode ir GET, visi veidlapas dati tiek kodēti URL un pievienoti darbība URL kā vaicājuma virknes parametri. Izmantojot POST veidlapu, tiek parādīti dati ziņojuma pamatteksts no HTTP pieprasījuma.
  • GET metodē parametru dati ir ierobežoti ar to, ko mēs varam ievietot pieprasījuma rindā (URL). Visdrošāk ir izmantot mazāk nekā 2 000 parametru, daži serveri apstrādā līdz pat 64 000. POST metodē šādas problēmas nav, jo mēs nosūtām datus ziņojuma pamatteksts HTTP pieprasījuma, nevis URL.
  • Tikai ASCII rakstzīmes ir atļautas datu nosūtīšanai, izmantojot GET metodi. POST metodē šādu ierobežojumu nav.
  • GET ir mazāk drošs salīdzinājumā ar POST, jo nosūtītie dati ir daļa no URL. Tāpēc GET metodi nevajadzētu izmantot, sūtot paroles vai citu sensitīvu informāciju.
Izveidojiet viktorīnu