09-06-2024, 10:44 AM
Python, hem standart kütüphaneleri hem de harici yüzlerce modülü ile çok güçlü bir dil. Bu modüller arasında özellikle web isteklerini yönetmek için kullanılan Requests modülü, oldukça popüler ve kullanışlı bir araçtır. Bu modül sayesinde, web üzerindeki API'lerle iletişim kurabilir ve GET, POST, PUT, DELETE gibi HTTP istekleri gönderebilirsiniz.
Requests Modülünün Kurulumu
Requests modülünü kullanmaya başlamadan önce, Python'un paket yöneticisi olan pip3 ile bu modülü yüklemelisiniz. Eğer pip3 sisteminizde kurulu değilse, aşağıdaki komut ile kurulumu gerçekleştirebilirsiniz:
Pip3 yüklendikten sonra, Requests modülünü şu komut ile yükleyebilirsiniz:
Artık Requests modülünü projelerinize dahil edebilir ve kullanmaya başlayabilirsiniz:
HTTP İstekleri Göndermek
Requests modülü ile farklı türde HTTP istekleri gönderebilirsiniz. Örneğin:
Bu örneklerde, GET, POST, PUT ve DELETE istekleri nasıl yapıldığını görebilirsiniz.
Parametre Gönderme
HTTP isteklerine parametre eklemek isterseniz, params sözlüğünü kullanabilirsiniz:
Bu örnekte, parametreler URL'nin sonuna eklenir ve isteğin tam URL'si r.url ile görüntülenebilir.
Yönlendirmeleri Yönetmek
Bir isteğin yönlendirilip yönlendirilmediğini kontrol etmek için allow_redirects parametresini kullanabilirsiniz:
POST İsteklerinde Form Verisi Göndermek
POST isteklerinde, bir form doldurup göndermiş gibi davranmak için data parametresini kullanabilirsiniz:
Timeout Belirlemek
Bir isteğin belirli bir süre içinde yanıt verip vermediğini kontrol etmek için timeout parametresini kullanabilirsiniz:
Eğer belirtilen süre içinde bir yanıt alınamazsa, bir hata meydana gelecektir.
JSON Verisi Göndermek
REST API'lerle çalışırken, genellikle JSON formatında veri göndermeniz gerekir. Bunun için json modülünü kullanarak veriyi JSON formatına dönüştürebilirsiniz:
Özel Header Bilgileri Göndermek
Bir isteği yaparken, headers parametresi ile özel HTTP header bilgileri gönderebilirsiniz:
HTTP İsteği Sonrası Kullanılabilecek Methodlar
İstek yaptıktan sonra, requests
modülü ile çeşitli bilgilere erişebilirsiniz:
Requests Modülünün Kurulumu
Requests modülünü kullanmaya başlamadan önce, Python'un paket yöneticisi olan pip3 ile bu modülü yüklemelisiniz. Eğer pip3 sisteminizde kurulu değilse, aşağıdaki komut ile kurulumu gerçekleştirebilirsiniz:
Kod:
sudo apt-get install python3-pip
Pip3 yüklendikten sonra, Requests modülünü şu komut ile yükleyebilirsiniz:
Kod:
pip3 install requests
Artık Requests modülünü projelerinize dahil edebilir ve kullanmaya başlayabilirsiniz:
Kod:
import requests
HTTP İstekleri Göndermek
Requests modülü ile farklı türde HTTP istekleri gönderebilirsiniz. Örneğin:
Kod:
r = requests.get('http://httpbin.org/get')
r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
Bu örneklerde, GET, POST, PUT ve DELETE istekleri nasıl yapıldığını görebilirsiniz.
Parametre Gönderme
HTTP isteklerine parametre eklemek isterseniz, params sözlüğünü kullanabilirsiniz:
Kod:
r = requests.get('http://httpbin.org/get', params={"kategori": "elektronik", "marka": "samsung"})
print(r.url)
Bu örnekte, parametreler URL'nin sonuna eklenir ve isteğin tam URL'si r.url ile görüntülenebilir.
Yönlendirmeleri Yönetmek
Bir isteğin yönlendirilip yönlendirilmediğini kontrol etmek için allow_redirects parametresini kullanabilirsiniz:
Kod:
r = requests.get("http://httpbin.org/redirect/1", allow_redirects=False)
print(r.status_code) # 302
r = requests.get("http://httpbin.org/redirect/1", allow_redirects=True)
print(r.status_code) # 200
POST İsteklerinde Form Verisi Göndermek
POST isteklerinde, bir form doldurup göndermiş gibi davranmak için data parametresini kullanabilirsiniz:
Kod:
r = requests.post("http://httpbin.org/post", data={"username": "selim", "password": "asd123"})
print(r.status_code) # 200
print(r.json()["form"]) # {'username': 'selim', 'password': 'asd123'}
Timeout Belirlemek
Bir isteğin belirli bir süre içinde yanıt verip vermediğini kontrol etmek için timeout parametresini kullanabilirsiniz:
Kod:
r = requests.get("http://httpbin.org/get", timeout=1)
Eğer belirtilen süre içinde bir yanıt alınamazsa, bir hata meydana gelecektir.
JSON Verisi Göndermek
REST API'lerle çalışırken, genellikle JSON formatında veri göndermeniz gerekir. Bunun için json modülünü kullanarak veriyi JSON formatına dönüştürebilirsiniz:
Kod:
import json
import requests
endpoint = "http://httpbin.org/post"
myData = {
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
}
r = requests.post(endpoint, data=json.dumps(myData))
print(r.status_code) # 200
Özel Header Bilgileri Göndermek
Bir isteği yaparken, headers parametresi ile özel HTTP header bilgileri gönderebilirsiniz:
Kod:
r = requests.post("http://httpbin.org/post", headers={"User-Agent": "Sinan-Chrome"})
print(r.status_code) # 200
HTTP İsteği Sonrası Kullanılabilecek Methodlar
İstek yaptıktan sonra, requests
modülü ile çeşitli bilgilere erişebilirsiniz:
- text: İsteğin dönen HTML içeriğini verir.
- headers: İsteğin HTTP başlık bilgilerini döner.
- url: İstek yapılan tam URL'yi döner.
- status_code: HTTP durum kodunu döner.
- history: İsteğin yönlendirilip yönlendirilmediğini gösterir.
- encoding: Sayfanın karakter kodlamasını döner.
- request: Yaptığınız isteğin türünü (GET, POST vb.) döner.
- elapsed: İsteğin gerçekleştirilme süresini döner.