Python - İleri Seviye Python

Request GET Methodu

Yayın tarihi :14-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.

Request GET Methodu, ile canlı bir sunucuya API isteğinde bulunmak için kullanılır. Bunun için request modülünün içe aktarılması gerekmektedir.

import requests

Request modülünün özeliklerine bakalım;

print(dir(requests))
#help(requests) daha detaylı bilgi için

Çıktı:

['ConnectTimeout', 'ConnectionError', 'DependencyWarning', 'FileModeWarning',
 'HTTPError', 'NullHandler', 'PreparedRequest', 'ReadTimeout', 'Request', '
RequestException', 'RequestsDependencyWarning', 'Response', 'Session', 'Timeout',
 'TooManyRedirects', 'URLRequired', '__author__', '__author_email__', '
__build__', '__builtins__', '__cached__', '__cake__', '__copyright__', 
'__description__', '__doc__', '__file__', '__license__', '__loader__', 
'__name__', '__package__', '__path__', '__spec__', '__title__', '__url__', 
'__version__', '_check_cryptography', '_internal_utils', 'adapters', 'api', 
'auth', 'certs', 'chardet', 'check_compatibility', 'codes', 'compat', 'cookies',
 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 
'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'ssl', 
'status_codes', 'structures', 'urllib3', 'utils', 'warnings']

Denemeler yapmak için ücretsiz bir şeklide test API'lerinin bulunduğu  https://jsonplaceholder.typicode.com sayfasındaki API'lerden faydalanacağız. 

1.Parametre olmadan veri çekme

Örnek-1:

todosUrl="https://jsonplaceholder.typicode.com/todos"
response=requests.get(todosUrl)
response

Çıktı:

<Response [200]>
print(dir(response)) #response'in alabileceği özelliklere bakalım

Çıktı:

['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__',
 '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', 
'__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', 
'__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__',
 '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', '_next', '
apparent_encoding', 'close', 'connection', 'content', 'cookies', 'elapsed', 'encoding', 'headers', 
'history', 'is_permanent_redirect', 'is_redirect', 'iter_content', 'iter_lines', 'json', 'links', 
'next', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']

Bunlardan en kullanışlı olanlara bakalım;

response.status_code #satus code, bağlantı başarılı olduğu için 200 döndü.

Çıktı:

200
response.url #url adresi

Çıktı:

'https://jsonplaceholder.typicode.com/todos'
response.text #içeriği düz bir şekilde gösterir.

Çıktı:

'[\n  {\n    "userId": 1,\n    "id": 1,\n    "title": "delectus aut autem",\n    "completed": false\n
  },\n  {\n    "userId": 1,\n    "id": 2,\n    "title": "quis ut nam facilis et officia qui",\n    "
completed": false\n  },\n  {\n    "userId": 1,\n    "id": 3,\n    "title": "fugiat veniam minus",\n
    "completed": false\n  },\n  {\n    "userId": 1,\n    "id": 4,\n    "title": "et porro tempora",\n  
  "completed": true\n  },\n  {\n    "userId": 1,\n    "id": 5,\n    "title": "laboriosam mollitia et e
nim quasi adipisci quia provident illum",\n ...........  ] 
response.json() #İçeriği json formatında gösterir.

Çıktı:

[{'userId': 1, 'id': 1, 'title': 'delectus aut autem', 'completed': False},
 {'userId': 1,
  'id': 2,
  'title': 'quis ut nam facilis et officia qui',
  'completed': False},
 {'userId': 1, 'id': 3, 'title': 'fugiat veniam minus', 'completed': False},
 {'userId': 1, 'id': 4, 'title': 'et porro tempora', 'completed': True},
 {'userId': 1,
  'id': 5,
  'title': 'laboriosam mollitia et enim quasi adipisci quia provident illum',
  'completed': False},.......]

2.Parametre göndererek veri çekme

Örnek-2

#https://jsonplaceholder.typicode.com/comments?postId=1
#Linkimizde postId parametresini(soru işaretinden sonraki değerler) göndereceğiz.
commentUrl="https://jsonplaceholder.typicode.com/comments"
pattern={"postId":2} #eğer birkaç tane parametre almış olsaydı burada tanımlanacaktı.
response=requests.get(commentUrl,params=pattern)
response

Çıktı:

<Response [200]>
response.status_code

Çıktı:

200
response.url

Çıktı:

'https://jsonplaceholder.typicode.com/comments?postId=2'
response.json()

Çıktı:

[{'postId': 2,
  'id': 6,
  'name': 'et fugit eligendi deleniti quidem qui sint nihil autem',
  'email': 'Presley.Mueller@myrl.com',
  'body': 'doloribus at sed quis culpa deserunt consectetur qui praesentium\naccusamus fugiat dicta\nvoluptatem rerum ut voluptate autem\nvoluptatem repellendus aspernatur dolorem in'},
 {'postId': 2,
  'id': 7,
  'name': 'repellat consequatur praesentium vel minus molestias voluptatum',
  'email': 'Dallas@ole.me',
  'body': 'maiores sed dolores similique labore et inventore et\nquasi temporibus esse sunt id et\neos voluptatem aliquam\naliquid ratione corporis molestiae mollitia quia et magnam dolor'},... ]

Örnek-3: Örneğimiz aşağıdaki özelliklerden oluşmaktadır.

  • https://jsonplaceholder.typicode.com/ sitesinde bulunan kullanıcıların oluşturdukları fotoğraf albümleri vardır.
  • Her fotoğraf albümünün bir bir sahibi vardır ve oluşturan kişinin userId'si bellidir. Bir kullanıcının birden fazla albümü olabilir.
  • Fotoğraflar listesinde albümün sahibinin userId'si yok ama albümId'si vardır.
  •  Son durumda isteğimiz şey userId bilgisini girdiğimizde kullanıcının fotoğraflarını listelemektir.
class Fotograf():
    def __init__(self,userId):
        self.userId=userId
        self.albumleriGetir=self.AlbumleriGetir()
        
    def AlbumleriGetir(self):
        albumUrl="https://jsonplaceholder.typicode.com/albums"
        pattern={"userId":self.userId}
        response=requests.get(albumUrl,params=pattern)
        albumIdList=[]
        if response.status_code==200:
            for alb in response.json():
                albumIdList.append(alb["id"])
            return albumIdList
        else:
            return None
        
    def AlbumdekiFotograflariGetir(self):
        fotoUrl="https://jsonplaceholder.typicode.com/photos"
        fotoList=[]
        for album in self.albumleriGetir:
            pattern={"albumId":album}
            response=requests.get(fotoUrl,params=pattern)
            if response.status_code==200:
                for foto in response.json():
                    fotoList.append(foto["url"])
                return fotoList
            else:
                return None   
        return fotoList
f1=Fotograf(2)
f1.AlbumleriGetir() #kullanıcının albümler listesi

Çıktı:

[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
f1.AlbumdekiFotograflariGetir()

Çıktı:

['https://via.placeholder.com/600/cda4c0',
 'https://via.placeholder.com/600/74e371',
 'https://via.placeholder.com/600/9022fb',
 'https://via.placeholder.com/600/99dd3f',
 'https://via.placeholder.com/600/1cb49b',
 'https://via.placeholder.com/600/91f992',
 'https://via.placeholder.com/600/dfe687',
 'https://via.placeholder.com/600/c4e0b1',
 'https://via.placeholder.com/600/963d65',
 'https://via.placeholder.com/600/4e59cd',
 'https://via.placeholder.com/600/4016ae',
 'https://via.placeholder.com/600/a45dfe',........
(Fazla alan kaplamasın diye görüntü kesildi) ]
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.