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:

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