HTTP päringute tegemine

HTTP päringute tegemiseks on paar erinevat moodust, kõige mõistlikumad neist on urllib või requests teeki kasutades.

Lisaks vaatame ka kiirelt üle kuidas saata ja vastu võtta JSONit.

urllib

urllib lubab meil teha päringuid nii with märksõna kasutades kui ilma. Laias laastus töötavad nad sama moodi, seega mõlemat pidi kasutamiseks ma kõiki näiteid ei tee.

Lihtsa GET päringu tegemine:

Alustame kõige vajaliku importimisega:

import urllib.request
response = urllib.request.urlopen('https://reddit.com')
print(response.read())

Lihtsa POST päringu tegemine:

import urllib.request
import urllib.parse
url = "http://reddit.com"
params = {
    "name": "Bertram Gilfoyle",
    "age": -1,
    "has_glasses": True
}

data = urllib.parse.urlencode(params)
req = urllib.request.Request(url, data)
response = urllib.request.urlopen(req)
print(response.read())

POST päringule headerite lisamine:

import urllib.request
import urllib.parse
API_KEY = "averysecureapikey"
url = "http://reddit.com"
params = {
    "name": "Bertram Gilfoyle",
    "age": -1,
    "has_glasses": True
}
headers = {"X-API-KEY": API_KEY}

data = urllib.parse.urlencode(params)
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
print(response.read())

Päringu tegemine kasutades with võtmesõna:

with urllib.request.urlopen("https://reddit.com") as request:
    print(request.read())

Stringi saamine HTTP vastusest:

Kuna response.read() tagastab andetüüpi bytes peame sellest stringi saamiseks kasutama response.read().decode()

Lisaks saad lugeda siit: https://docs.python.org/3.1/howto/urllib2.html

Requests

Requests on alternatiiv pythoni sisse ehitatud urllib teegile, mis on keerulisemate päringute tegemiseks natukene mugavam. Samas ei ole see vaikimisi installitud.

Installimiseks kasuta käsku pip install requests

Või tee pycharmis uus fail ja kirjuta sinna import requests. Vajuta klaviatuuril alt + enter ning vali avanenud menüüst “Install package requests”.

https://ained.ttu.ee/pydoc/images/ex13_blackjack.png

Lihtsa GET päringu tegemine:

Alustame kõige vajaliku importimisega:

import requests
r = requests.get('https://reddit.com')
print(r.text())

Get päring JSON-formaadis info pythoni dictonarysse muutmiseks.

response = requests.get("https://api.chucknorris.io/jokes/random")
print(response.json())

Lihtsa POST päringu tegemine:

import requests
data = {
    "name": "Bertram Gilfoyle",
    "age": -1,
    "has_glasses": True
}
r = requests.post('https://reddit.com', data=data)
print(r.text())

POST päringule headerite lisamine:

import requests
API_KEY = "averysecureapikey"
url = "http://reddit.com"
params = {
    "name": "Bertram Gilfoyle",
    "age": -1,
    "has_glasses": True
}
headers = {"X-API-KEY": API_KEY}

r = requests.post('https://reddit.com', data=data, headers=headers)
print(response.read())

Demo requests teegi kasutamisest ja päringust objektide tegemiseks.