İmleçlenmiş sonuçları bir araya getirmek için, -1 değeriyle imleci bitiş noktasına kadar getirmeniz gerekmektedir. Standart olarak, imleçlemeyi destekleyen Rest API bitiş noktası, eğer herhangi bir imleç / cursor belirtmezseniz -1 değerini alacaktır. İmleçlenmiş isteğe cevap, previous_cursor, next_cursor, previous_cursor_str ve next_cursor_str kodlarını içerecektir. Bu durum bir çok Twitter API`sinin ID değerlerinde mevcut olmasından dolayı, _str değerleri, JavaScript gibi büyük sonuçları desteklemeyen değerler için sunulmaktadır.
Next_cursor imleci, bir sonraki yanıtları toplamak için bitiş noktasına göndermeniz gereken imleçtir. Previous_cursor ise, bir önceki yanıtlar için göndermeniz gereken imleçtir. Rest API size next_cursor=0 yanıtımı verdiğinde, en son sayfada olduğunuzu fark edeceksiniz.
Twitter Kod Örneği
İmleçlenmiş bitiş noktasından itibaren tüm kodları yineleyen örnek kod aşağıdaki gibidir.
api_path = "https://api.twitter.com/1.1/endpoint.json?screen_name=targetUser"
do {
url_with_cursor = api_path + "&cursor=" + cursor
response_dictionary = perform_http_get_request_for_url( url_with_cursor )
cursor = response_dictionary[ `next_cursor` ]
}
while ( cursor != 0 )
Twiitter Takipçi Listeleme
İmleçlerin gerçek hayatta nasıl çalıştığına birlikte göz atalım. Yüksek sayıda takipçisi olan bir kullanıcının takipçilerinin ID’lerinin listesini edinmemiz gereken bir senaryo düşünün. Tüm ID’leri tek bir betikte toplamak yerine, bitiş noktaları, sonuçları sayfalara bölecektir.
İstek (Request)
Yanıt / Response (kesilmiş)
"ids": [
385752029,
602890434,
...
333181469,
333165023
],
"next_cursor": 1374004777531007833,
"next_cursor_str": "1374004777531007833",
"previous_cursor": 0,
"previous_cursor_str": "0"
}
Bu noktada, veri setinde ileri gitmek için next_cursor komutunu kullanacağımızı biliyoruz. En az 5,000 sonucu içeren bir sayfaya gitmek için aynı komutu kullanıyoruz fakat cursor komutunu next_cursor değerine giriyoruz.
İstek (Request)
Yanıt / Response (kesilmiş)
"ids": [
333156387,
333155835,
...
101141469,
92896225
],
"next_cursor": 1323935095007282836,
"next_cursor_str": "1323935095007282836",
"previous_cursor": -1374003371900410561,
"previous_cursor_str": "-1374003371900410561"
}
Bu örnekte de, aynı next_cursor değeri gibi bir de previous_cursor değerini görüyoruz. Bunun anlamı, sonuçlar arasında ileri geri geçişler yapabileceğimizdir. Şimdi bir sonraki sayfada gelecek muhtemel değerleri de inceleyelim.
İstek (Request)
Yanıt / Response (kesilmiş)
"ids": [
73635015,
61175149,
...
18300955,
32684766
],
"next_cursor": 0,
"next_cursor_str": "0",
"previous_cursor": -1323886329961827926,
"previous_cursor_str": "-1323886329961827926"
}
Evvvettt! Bu örnekte next_cursor değeri 0. Bu da bize artık mevcut sayfanın kalmadığını yani son sayfada olduğumuzu gösteriyor. Yani hesabın takipçileri arasında geçiş yapmayı başarılı bir şekilde tamamladık ve son bilgilere ulaştık.