ГЕТ и ПОСТ захтеви користећи Питхон

ГЕТ и ПОСТ захтеви користећи Питхон

Овај пост говори о две методе захтева ХТТП (Хипертект Трансфер Протоцол)  ГЕТ и ПОСТ захтева у Питхон-у и њиховој примени у Питхон-у. 

Шта је ХТТП?  

ХТТП је скуп протокола дизајнираних да омогуће комуникацију између клијената и сервера. Ради као протокол захтев-одговор између клијента и сервера. Веб претраживач може бити клијент, а апликација на рачунару који хостује веб локацију може бити сервер. Дакле, да бисте затражили одговор од сервера, углавном постоје два начина:

  1. ГЕТ : За тражење података са сервера.
  2. ПОСТ : За слање података за обраду на сервер.

Ево једноставног дијаграма који објашњава основни концепт ГЕТ и ПОСТ метода.

ГЕТ и ПОСТ захтеви користећи Питхон 

 Сада да направите ХТТП захтеве Питхон можемо користити неколико ХТТП библиотека као што су:

Најелегантнија и најједноставнија од горе наведених библиотека је Захтеви. Користићемо библиотеку захтева у овом чланку. Да бисте преузели и инсталирали библиотеку захтева користите следећу команду:

 pip install requests  

Израда захтева за Гет

Горњи пример проналази географску ширину и дужину и форматирану адресу дате локације слањем ГЕТ захтева АПИ-ју Гоогле мапа. Ан АПИ (Апликацијски програмски интерфејс) вам омогућава да приступите унутрашњим карактеристикама програма на ограничен начин. И у већини случајева наведени подаци су у ЈСОН (ЈаваСцрипт нотација објекта) формату (који је имплементиран као објекти речника у Питхон-у!).

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

Излаз:

ГЕТ и ПОСТ захтеви користећи Питхон

Важне тачке за закључити:

 PARAMS = {'address':location}  

УРЛ за ГЕТ захтев углавном носи неке параметре са собом. Параметри библиотеке захтева се могу дефинисати као речник. Ови параметри се касније рашчлањују и додају основном УРЛ-у или крајњој тачки АПИ-ја. Да бисте разумели улогу параметра, покушајте да одштампате р.урл након креирања објекта одговора. Видећете нешто овако:

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

Ово је стварна УРЛ адреса на којој је направљен ГЕТ захтев

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

Овде креирамо објекат одговора 'р' који ће чувати захтев-одговор. Користимо рекуестс.гет() метод пошто шаљемо ГЕТ захтев. Два аргумента која прослеђујемо су УРЛ и речник параметара.

 data = r.json()  

Сада да бисмо преузели податке из објекта одговора, морамо да конвертујемо сирови садржај одговора у структуру података типа ЈСОН. Ово се постиже коришћењем методе јсон(). На крају издвајамо потребне информације рашчлањивањем објекта типа ЈСОН.

Прављење ПОСТ захтева

Овај пример објашњава како да налепите свој изворни код да пастебин.цом слањем ПОСТ захтева на ПАСТЕБИН АПИ. Пре свега, мораћете да генеришете АПИ кључ од пријављивање овде а затим приступити вашем АПИ кључ овде.  

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  )   

Важне карактеристике овог кода:

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

Овде ћемо поново морати да проследимо неке податке АПИ серверу. Ове податке чувамо као речник.

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

Овде креирамо објекат одговора 'р' који ће чувати захтев-одговор. Користимо рекуестс.пост() метод пошто шаљемо ПОСТ захтев. Два аргумента која прослеђујемо су УРЛ и речник података.

 pastebin_url = r.text  

Као одговор, сервер обрађује податке који су му послати и шаље пастебин_УРЛ вашег изворни_код којима се једноставно може приступити р.текст.

захтеви.пост метода се може користити за многе друге задатке, као и за попуњавање и подношење веб образаца који се објављују на вашој ФБ временској линији користећи Фацебоок Грапх АПИ итд. 

Ево неколико важних тачака о којима треба размислити:

  • Када је метод ГЕТ, сви подаци обрасца се кодирају у УРЛ и додају у акција УРЛ као параметри стринга упита. Са ПОСТ обрасцем подаци се појављују унутар тело поруке ХТТП захтева.
  • У методи ГЕТ подаци о параметрима су ограничени на оно што можемо да унесемо у ред захтева (УРЛ). Најсигурније је користити мање од 2К параметара неки сервери обрађују и до 64К. Нема таквог проблема у ПОСТ методи јер шаљемо податке у тело поруке ХТТП захтева не УРЛ.
  • Само АСЦИИ знакови су дозвољени за слање података методом ГЕТ. У ПОСТ методи нема таквог ограничења.
  • ГЕТ је мање безбедан у поређењу са ПОСТ-ом јер су послати подаци део УРЛ-а. Дакле, метод ГЕТ не би требало да се користи приликом слања лозинки или других осетљивих информација.
Креирај квиз