League Of Legends Api Kullanımı

Merhaba Arkadaşlar. Api ders konusunda da Laravel dersleri kadar destek verdiğiniz için teşekkür ederim :) Öncelikle Hürriyet Api ile ilgili yazdığım makalemden sonra OOP yapısını kullanmam önerildi ve tabi ki buna bende sonuna kadar katılıyorum ki bende uzun zamandır bu şekilde kod yazmadığımdan garip de hissettim kendimi :) Ama amacım OOP yapısını hala bilmeyen ve öğrenmeyide düşünmeyen kişilerinde bundan yararlanabilmesi. Elbet ki doğru yolu bulacaklardır ama bu yolda değilken de en azından Api derslerinden yararlanmasının sakıncası yok :)  Anladığınız üzerine de League Of Legends için de OOP yapısı kullanmadım :)

 

League Of Legends Api içeriği farklı farklı bir çok method içeriyor. Ben tabi ki bu projeyi hazırlarken tüm methodları veya methodlar içerisindeki tüm çıktı verilerini kullanmadım. Zaten önemli olan kullanımını görmeniz geliştirmek için sadece dökümanı incelemek yeterli olacaktır. 

 

Döküman içerisinde 2 farklı sayfadan yararlandım. Bunlar ;

 

Full Api Methodları   Static Data

 

Başlıklardan anlayacağınız gibi bir sayfada Api Methodları bulunuyor diğerinde ise Statik Veriler bulunuyor. Konu altında yararlandığım ve yararlanabileceğiniz tüm linkleri , Github linkini ayrıyeten bulabilirsiniz.

 

Şimdi ilk olarak Riot Games Developer sayfasına girelim. Oyun hesabınız var ise onunlada giriş yapabilirsiniz veya yeni bir hesap oluşturabilirsiniz. Bir Api Key almamız gerekecek. Projeyi indirip config.php içerisinde bulunan $baseUrl ve $apiKey değişkenlerini gerektiği gibi doldurmak projenin çalışması için yeterli olacaktır ama benim tavsiyem şuan hemen projeyi çalıştırma çabasına girmeyin. İlk olarak Developer sayfasına girdikten sonra Full Api Methodları sayfasına girin. Tüm Methodlar karşınızda en alttan 1 üsttünde bulunan summoner-v1.4 tıklayın.Bu method içerisinde bize 5 farklı seçenek sunuyor. En üstteki hariç diğer bilgiler {summonerIds} yani Karakterin Id ile gerçekleştiriliyor. Daha sonra istediğiniz gibi inceleyebilirsiniz tabi ki fakat benim şuan ki amacım döküman kullanımını rahatlıkla kavramanız yönünde.Şimdi ilk olarak en başta bulunan {summonerNames} Karakterin Adı ile işlem yapacağımız methodla başlayalım. Buna tıklayın ve biraz aşağı indiğinizde Path Parameters kısmına karakter adı girin. Eğer daha önce oynamadıysanız arkadaşımın hesabı olan Crimsonblood yazabilirsiniz.Daha sonra server seçimi yapmanız gerekiyor Crimsonblood TR serverinde bulunmaktadır ve son adım EXECUTE REQUEST diyip sonucunu inceliyoruz. Gördüğünüz gibi bize bir Request URL verdi bu linke tıklayarak çıktıyı farklı pencerede daha net inceleyebilirsiniz ama bunun haricinde Response Body kısmında da çıktı veriliyor. Döküman kullanımını gördüğünüze göre artık projemize başlayabiliriz.

 

Proje içerisinde  

Şampiyonları Listeleme (index.php)

Şampiyon Detay Sayfası , Şampiyon Skinleri (champion.php)

İtemleri Özellikleri ile Listeleme (items.php)

Karakter Bilgilerini Sorgulama , Detaylı Bilgiler , Canlı Maç Kontrolü (characterPost.php)

Bulunmaktadır.  Kullandığım Json & Method isimleri sırasıyla

champion.json (index.php)

{championId}.json (champion.php)

item.json (items.php)

summoner-v1.4 , stats-v1.3 , team-v2.4 , current-game-v1.0 (characterPost.php)

 

şeklindedir. Proje içerisinde Hürriyet Api de olduğu gibi aynı tasarım ve yapıyı kullandım. Config içerisinde curl ve json_decode bulunan basit bir fonksiyon yazdık ve bazı methodların var olup olmadığını kontrol edebilmek için CURLINFO_HTTP_CODE kullandık. Bazı methodlar nedir diye hiç düşünmeye gerek yok en basit şekilde aradığımız oyuncunun Takımı var mı yok mu bunu kontrol etmemiz gerekir hata almayı engellemek için. Sayfalar içerisinde bu fonksiyonu farklı URL ile çektik ve json çıktısını ayrıştırdık. Proje içerisinde belki karışık gelecek tek yer characterPost.php olabillir ama sırayla bakarsanıza aslında onda da bir zor kısım yok  sadece 1 den fazla methodu aynı sayfada kullandığımızdan karmaşık gelebilir.Sıralı kontrol etmeniz yeterli olacaktır. Örnek olarak index.php de bulunan şampiyonları çeken kodu inceleyelim.

 

$decode = getFunc("http://ddragon.leagueoflegends.com/cdn/6.21.1/data/tr_TR/champion.json");

    foreach ($decode['data'] as $champion) {
        echo "
             <a class='data' href='champion/$champion[id]'>
                <img src='http://ddragon.leagueoflegends.com/cdn/img/champion/loading/$champion[id]_0.jpg' alt='$champion[name]' title='$champion[name]' />
                 <h3>$champion[name]</h3>
            </a>
            ";
    }

 

champion.json içerisinde bulunanları foreach ile tek tek ekrana yazdırdık aslında yine açıklanacak pek birşey bulamadım :) Son olarak yararlandığım ve yararlanabileceğiniz linkleri ve github linkini sizinle paylaşayım.

 

Karakter Bilgileri : summoner-v1.4

Karakterin Detaylı Bilgileri : stats-v1.3

Karakterin Takım Bilgileri : team-v2.4

Karakterin Canlı Maç Bilgileri : current-game-v1.0

Oyun içerisinde bulunan şampiyonların listesi : champion.json

Herhangi bir şampiyonun detaylı bilgisi : Aatrox detaylı bilgi

Oyun içerisindeki İtemlerin Listesi : items.json

Şampiyonun Resmi - Şampiyon Skinlerinden Biri (Link sonunda bulunan rakamın artması) - Şampiyon Büyük Resim (splash) - Şampiyon Küçük Resim : Aatrox_0 -  Aatrox_1 -  Büyük Aatrox Resim - Küçük Aatrox Resim

İtemin Resmi : İtem

Profile Icon Json : Json

Profil İcon Resmi :  Resim

Flash Speel Resim : Resim

Mastery Resim : Resim

Mastery Json : Json

Rune Resim : Resim

Rune Json : Json

Map Resim : Resim

 

Github

Projenin Dosyaları : Github

 

Proje İçerisinden Görüntüler


Yorumlar

Avatar
Oğuzhan ÇAKAR  - 2 Yıl Önce
@Taner , @Umut Rica Ederim :)
Avatar
Umut  - 2 Yıl Önce
Anlatım için çok teşekkürler data dragon linklerini bulmakta sıkıntı çekiyordum anlatımınızdaki linkler ile hepsini sık kullanılanlarıma aldım teşekkür ederim :)
Avatar
Taner  - 2 Yıl Önce
Json dosyasını kendi hostumda barındırdığımda sorun çözüldü. Paylaşım için tekrar teşekkürler.
Avatar
Oğuzhan ÇAKAR  - 2 Yıl Önce
Merhabalar @Taner problemi tam anlamadım. Mail adresine bakarsan yardımcı olabilirim
Avatar
Taner  - 3 Yıl Önce
Merhaba, öncelikle paylaşım için teşekkürler. Proje ilk denememde çalıştı fakat sonrasında tasarımsal değişiklikleri izlemek için sayfayı refresh yaptıkça çalışmamaya başladı. Bu neden olabilir?
Avatar
Oğuzhan ÇAKAR   - 3 Yıl Önce
Merhabalar @Bibilgicik bıraktığınız mail adresine mail gönderdim. Hatayı iletirseniz çözmeye çalışalım
Avatar
Bibilgicik  - 3 Yıl Önce
Proje hata veriyor neden acaba ve nasil cözerim ?

Düşünceni Bizimle Paylaş