В тази публикация се обсъждат два метода за заявки HTTP (Hypertext Transfer Protocol) GET и POST заявки в Python и тяхното внедряване в Python.
Какво е HTTP?
- ВЗЕМЕТЕ : За да поискате данни от сървъра.
- ПУБЛИКУВАНЕ : За изпращане на данни за обработка на сървъра.
Сега да направим HTTP заявки Python можем да използваме няколко HTTP библиотеки като:
Най-елегантната и най-простата от изброените по-горе библиотеки е Requests. В тази статия ще използваме библиотеката със заявки. За да изтеглите и инсталирате библиотеката с заявки, използвайте следната команда:
pip install requestsПравене на заявка за получаване
Горният пример намира географската ширина, дължина и форматирания адрес на дадено местоположение чрез изпращане на GET заявка до API на Google Maps. Ан API (Интерфейс за програмиране на приложения) ви дава възможност за достъп до вътрешните функции на програма по ограничен начин. И в повечето случаи предоставените данни са в JSON (JavaScript Object Notation) формат (който е имплементиран като речникови обекти в Python!).
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))
Изход:
Важни точки за заключение:
PARAMS = {'address':location}URL адресът за GET заявка обикновено носи някои параметри със себе си. Параметрите на библиотеката на заявките могат да бъдат определени като речник. Тези параметри по-късно се анализират и добавят към основния URL адрес или крайната точка на API. За да разберете ролята на параметъра, опитайте да отпечатате r.url след като обектът за отговор е създаден. Ще видите нещо подобно:
http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+universityr = requests.get(url = URL params = PARAMS)Тук създаваме обект за отговор 'r', който ще съхранява заявката-отговор. Използваме метода requests.get(), тъй като изпращаме GET заявка. Двата аргумента, които предаваме, са URL адресът и речникът на параметрите.
data = r.json()Сега, за да извлечем данните от обекта на отговора, трябва да преобразуваме суровото съдържание на отговора в структура от данни тип JSON. Това се постига чрез използване на метода json(). Накрая извличаме необходимата информация, като анализираме обекта от тип JSON.
Правене на POST заявка
Този пример обяснява как да поставите своя изходен_код към pastebin.com чрез изпращане на POST заявка до API на PASTEBIN. Първо ще трябва да генерирате API ключ от регистрирайки се тук и след това достъп до вашия API ключ тук.
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'}
Тук отново ще трябва да предадем някои данни на API сървъра. Ние съхраняваме тези данни като речник.
r = requests.post(url = API_ENDPOINT data = data)Тук създаваме обект за отговор 'r', който ще съхранява заявката-отговор. Използваме метода requests.post(), тъй като изпращаме POST заявка. Двата аргумента, които предаваме, са URL адресът и речникът на данните.
pastebin_url = r.textВ отговор сървърът обработва изпратените до него данни и изпраща pastebin_URL на вашия изходен_код които могат да бъдат лесно достъпни от r.text.
заявки.пост методът може да се използва за много други задачи, както и за попълване и изпращане на уеб формуляри, публикувани във вашата времева линия във FB с помощта на Facebook Graph API и др.
Ето някои важни точки, върху които да помислите:
- Когато методът е GET, всички данни на формуляра се кодират в URL адреса и се добавят към действие URL като параметри на низ на заявка. С POST формуляр данните се появяват в тяло на съобщението на HTTP заявката.
- В метода GET данните за параметрите са ограничени до това, което можем да поставим в реда за заявка (URL). Най-безопасно е да използвате по-малко от 2K параметри, някои сървъри обработват до 64K. Няма такъв проблем в метода POST, тъй като изпращаме данни в тяло на съобщението на HTTP заявката, а не на URL адреса.
- Само ASCII символи са разрешени за изпращане на данни в метода GET. В метода POST няма такова ограничение.
- GET е по-малко сигурен в сравнение с POST, тъй като изпратените данни са част от URL адреса. Така че методът GET не трябва да се използва при изпращане на пароли или друга чувствителна информация.