Requests moodul - HTTP päringud Pythoniga¶
Vihje
Kõige kindlam ressurss on alati dokumentatsioon:
vaata Requests dokumentatsiooni https://requests.readthedocs.io/en/latest/ ja seal rohkemate näidete jaoks https://requests.readthedocs.io/en/latest/user/quickstart/
Requests mooduli paigaldamine¶
Kuna Requests pole Pythoni standardteegi osa, tuleb see eraldi paigaldada. Protsess toimub nagu iga muugi paki puhul:
kas käsurealt
pip install requests
või PyCharmi tööriistade kaudu: vaata https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-upgrading-packages.html
Pärast seda tuleb vastavas Pythoni failis requests
pakk lihtsalt importida:
import requests
Lihtsam kasutus¶
Märkus
Rahvakeeli öeldakse "HTTP GET meetodit kasutav päring" asemel ka lihtsalt "(HTTP) GET päring (GET request)" ja sarnaselt ka teiste HTTP verbide kohta.
HTTP GET meetod, vastus JSON ja teksti kujul¶
# GitHub'i vastav API tagastab JSON kujul vastuse.
# Requests mooduli `.json()` meetod teisendab HTTP vastuse JSON-kujulise keha
# sobivaks Pythoni objektiks (nt järjend)
response = requests.get('https://api.github.com/events')
data = response.json()
print(data)
print(type(data))
# example.com tagastab HTML-i, siin `.json()` meetodi kasutamine viskaks erindi.
# Kasutame parem `.text`
response = requests.get('https://example.com/')
print(response.text)
HTTP GET meetod, URL parameetritega¶
URL parameeter ehk query parameter.
url_params = {'page': 3, 'per_page': 1}
response = requests.get('https://api.github.com/events', params=url_params)
print(response.url)
# https://api.github.com/events?page=3&per_page=1
print(response.json())
HTTP POST meetod - form päringu keha¶
Sellist HTTP päringu keha tüüpi kasutab brauser traditsioonilise HTML <form>
elemendi postitamisel ja API-de loomisel seda pigem ei kasutata, sest on ajalooliste konarustega ja ei toeta hästi mitmetasandilisi (nested) andmestruktuure.
body = {'key': 'value', 'another': 'val'}
response = requests.post('https://httpbin.org/post', data=body)
# ^ vastav HTTP päring oleks (lihtsustatult):
"""
POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/x-www-form-urlencoded
key=value&another=val
"""
print(response.text)
HTTP POST meetod - JSON päringu keha¶
body = {'key': 'value', 'another': 'val'}
response = requests.post('https://httpbin.org/post', json=body)
# ^ vastav HTTP päring oleks (lihtsustatult):
"""
POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/json
{"key": "value", "another": "val"}
"""
print(response.text)
HTTP DELETE meetod, enda HTTP pärigupäistega¶
url = 'https://httpbin.org/delete'
my_headers = {
'user-agent': 'whatever',
'authorization': 'bearer mytoken'
}
response = requests.delete(url, headers=my_headers)
print(f"HTTP status code: {response.status_code}")
print()
print("Server received the following headers:")
for k, v in response.json()['headers'].items():
print(f"{k}: {v}")