
Python dilinde kullanımından en çok zevk aldığım kütüphane ile karşınızdayım. Hadi o zaman birlikte Python Django Requests Kütüphanesi Kullanımına bakalım.
Python Requests Modülü Nedir
Genellikle bu modülü Django’da api istekleri atarken kullanıyorum. Genel amacı da o zaten, bu modül ile api servislerine PUT, DELETE, POST gibi istekler atabilirsiniz.
Django Python Requests Modülü Kurulumu
Öncelikle paket yöneticisini kurmanız gerekir. Python3 üzerinden örnek verirsek;
sudo apt-get install python3-pip
bu şekilde python3 için paket yöneticisini kuruyoruz.
pip3 install requests
Komutuyla requests kütüphanemizi kuruyoruz.
Kullanmak istediğimiz dosyada import edip kullanmaya başlayabiliriz, bunun için dosyanın üst satırlarına(kullanımdan önce)
import requests
İmport komutumuzu ekliyoruz.
Requests Modülü Kullanarak İstek Göndermek
>>> r = requests.get('https://kivircikyazilimci.com/get')
>>> r = requests.post('https://kivircikyazilimci.com/post')
>>> r = requests.put('https://kivircikyazilimci.com/put')
>>> r = requests.delete('https://kivircikyazilimci.com/delete')
düz bir şekilde get, post, put, delete istekleri bu şekilde gönderiliyor ama her zaman düz göndermek yetmiyor bazen parametre vb argümanlar ile desteklenmesi gerekebiliyor.
Requests Modülü Parametre Göndermek
>>> r = requests.get('https://kivircikyazilimci.com/get', params={"kategori":"yazılım","marka":"dünya"})
>>> r.url
'https://kivircikyazilimci.com/get?marka=yazılım&kategori=dünya'
params sözlüğü içinde parametre geçtim, url methodu ile de istek yapılan url adresini ulaşabilirsiniz. Dikkat ettiyseniz verdiğimiz parametreler url adresinin sonuna eklendi.
Bazen istek attığımız sayfa başka bir url’e yönleniyor olabilir, bu aktarmayı takip edebilir veya etmeyebiliriz, bunun için de allow_redirects=True veya False kullanılıyor.
>>> r = requests.get("https://kivircikyazilimci.com/redirect/1",allow_redirects=False)
>>> r.status_code
302
>>> r = requests.get("https://kivircikyazilimci.com/redirect/1",allow_redirects=True)
>>> r.status_code
200
allow_redirects=False yapıldığında yönlendirmeyi kapattı ve o istek url’i status_code değeri 302 döndü. True yapınca da yönlendirme kabul edildi ve status_code değeri 200 döndü. HTTP status kodlarını incelemek isterseniz buraya tıklayabilirsiniz.
Hadi birlikte GET değilde POST isteği atalım
>>> r = requests.post("https://kivircikyazilimci.com/post", data={"username":"sinan","password":"asd123"})
>>> r.status_code
200
>>> r.json()
{'files': {}, 'args': {}, 'url': 'https://kivircikyazilimci.com/post', 'json': None, 'data': '', 'headers': {'Host': 'kivircikyazilimci', 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'close', 'Content-Length': '30', 'User-Agent': 'python-requests/2.9.1', 'Content-Type': 'application/x-www-form-urlencoded'}, 'origin': '78.190.133.110', 'form': {'username': 'kivircik', 'password': 'asd123'}}
>>> r.json()["form"]
{'username': 'kivircik', 'password': 'asd123'}
Dikkat ettiyseniz data parametresi ile username ve password bilgilerini formdata olarak gönderdim. Ardından status_code methodu ile 200 yani başarı sağladığını kontrol ettim. Ardından json methodu ile dönen değeri ekrana bastırdım. Kullandığımız httpbin.org servisi, post ettiğimiz parametreleri bize geri döndürüyor. Bu nedenle json içinden sadece form alanını çekerek gönderdiğim parametreleri görebildim.
Python Requests Modülü Text Getirme
Sitenin HTML içeriğini döndürür.
>>> r = requests.get("https://kivircikyazilimci.com/")
>>> r.text
Python Requests Modülü Headers Getirme
Header bilgilerini gösterir.
Dilerseniz istediğiniz header bilgilerini siz get isteği ile birlikte belirtebilirsiniz.
r = requests.get("https://kivircikyazilimci.com/", headers={'user-agent': 'kivircikyazilimci'})
Python Requests Modülü Url Getirme
Hangi url adresine istek gönderdiğini döner. İstek yaparken parametre olarak bazı değerler gönderebilirsiniz.
>>> r = requests.get("https://kivircikyazilimci.com/", params={"ad":"kivircik","soyad":"yazilimci"})
>>> r.url
'https://kivircikyazilimci.com/?soyad=yazilimci&ad=kivirick'
Url adresinin sonunda verdiğim parametrelerin nasıl iliştirildiğine dikkat edin.
Python Requests Modülü status_code Getirme
İsteğin HTTP durum kodunu döndürür.
>>> r = requests.get("http://httpbin.org/")
>>> r.status_code
200
Aslında requests modülü hakkında bilmeniz gereken şeyler bunlar, elimden geldiğince aktarmaya çalıştım. Kodla kalın, iyi kodlamalar.