API Nedir? Adım Adım API Kullanımı
Karnınız acıktı ve yemek yemek için bulduğunuz konuma en yakın restoranlardan birine girdiniz. Şimdi sıra genellikle en zor ama en keyifli aşamada, ne yiyeceğinize karar vermek :)
Uzun düşüncelere ve menü incelemelerine daldıktan sonra artık ne yiyeceğinize karar verdiyseniz, seçimimizi mutfağa iletmesi için garsona siparişinizi verebilirsiniz. Eğer şanslıysanız, kısa süreli bir beklemenin ardından yemeğinizi yemeye başlayabilirsiniz :)
- Peki bu senaryonun konu başlığımızla olan alakası ne?
Aslında API’ler (Application Programming Interface) da bizim için tam olarak bu görevi üstlenirler.
Veri ile ilgili yaptığımız çalışmalarda bazen popüler ve güncel kaynakların verilerini kullanmak isteriz ancak onları nereden bulacağımızı tam olarak bilemeyebiliriz. İşte bu noktada tam olarak yapmamız gereken, API’lerden yararlanarak kaynak veritabanıyla kendi bilgisayarımız arasındaki o veri bağlantısını kurmaktır. (Aynı garsonlar siparişimizi alıp mutfağa iletmesi ve ardından yemeğin önümüze gelmesinde olduğu gibi)
API’ler kendi içerisinde kullanım senaryolarına ve erişim kısıtlamalarına göre bazı kategorilere ayrılırlar. Aşağıdaki şekilde bunların neler olduğunu inceleyebilirsiniz.
Open API’leri erişmek diğerine nazaran çok daha zahmetsiz olduğu için biz kendi örneklerimizi bu API servisleri üzerinden şekillendirelim. Aşağıda bazı dünyaca tanınan şirketlerin API servislerini inceleyebilirsiniz.
Yukarıdaki isimleri kullanarak firmaların API servislerine ulaşabilir, bu sitelerden ihtiyacınız olan API’lere erişebilmek için yapmanız gerekenleri adım adım açıklayan dokümanlar bulabilirsiniz.
NOT: Eğer ilk defa bir API servisi kullanacaksanız, başta ne zaman ne yapmamız gerektiğiyle ilgili kafa karışıklıkları yaşanabiliyor. Genel mantık oldukça benzer olsa da, hangi API servisini kullanmak istediğinize göre yapmanız gereken işlem adımlarında bazı farklılıklar olabiliyor. Bunun en kesin çözümü kullanmak istediğiniz API servisinin kendi dokümantasyonunu inceleyerek, sırasıyla oradaki adımları takip etmek!
Ancak biz yinede genel olarak yapmanız gereken temel işlem adımlarını beraber sırasıyla inceleyelim.
Şimdi de yukarıda konuştuklarımızın tam olarak karşılığını görebilmemiz için beraber bir uygulama yapalım. Bu örnekte yukarıda da bahsettiğimiz örneklerden biri olan AccuWeather’ın API servisini kullanarak verilerine ulaşmayı deneyelim.
1. AccuWeather Developer Hesabı Oluşturma
Öncelikle alttaki ekran görüntüsünde de görüldüğü üzere ekranın sağ üstünde yer alan REGISTER butonuna tıklayarak API servisine kayıt olmamız gerekiyor.
2. AccuWeather Appi Oluşturma
Hesabınızı oluşturduktan sonra hesabınıza tekrar giriş yapın ve aşağıdaki ekran görüntüsünde de gösterildiği gibi yeni bir APP oluşturun.
App oluşturma ekranında sizi bazı sorular karşılayacak, bunlara uygun cevaplar vererek app oluşturma adımını tamamlayınız.
Ardından aşağıdaki CREATE APP butonuna bastığınızda applerinizin gözüktüğü sayfada vermiş olduğunuz isimle appinizin oluştuğunu göreceksiniz.
3. AccuWeather API Key’ine Erişme
Bir önceki adımda oluşturmuş olduğunuz appin içerisine girdiğinizde burada bizi bazı detaylar karşılaşacak. Burada Keys sekmesinde, size özel olarak üretilen API Key’inizi göreceksiniz.
Bu anahtarı bir kenara not alın. Verilere erişmek istediğimizde bunu kullanarak erişim sağlayacağız.
NOT: Bu anahtarın size özel oluşturulduğunu ve bu sebeple güvenlik açısından başkalarıyla paylaşmamanız gerektiğini hatırlatmak isteriz!
4. AccuWeather Verilerine Erişme
Artık API Key’mizi elde ettiğimize göre hangi veriye ulaşmak istediğimizi seçebiliriz. Bunun için API REFERENCE menüsünü kullanacağız. Aşağıdaki ekran görüntüsünde erişebileceğimiz servisleri görüyorsunuz.
Hadi İstanbul’daki son 24 saatlik hava durumu verilerine ulaşmayı deneyelim.
Bunun için sırasıyla, Current Conditions API → Historical Current Conditions (past 24 hours) linkine tıklarsanız, karşınıza aşağıdaki gibi bir sayfa çıkıcaktır. Burada bizden bu verilere erişebilmemiz için gerekli anahtarları istiyor.
Ekran görüntüsünde gözüken Query Parameters kısmını doldurarak artık istediğimiz konumun son 24 saatlik verisine ulaşabiliriz. Ancak hala eksik bir bilgi var.
- İstanbul ilindeki verileri görmek istediğimi nasıl belirtmeliyim?
Dikkatli bakarsanız Resource URL kısmında {locationKey}
olarak bize bırakılan bir bölüm var. İşte buraya erişmek istediğimiz konumun, konum anahtarını yazmamız gerekiyor.
Bunu bulmak için API REFERENCE menüsüne geri dönüp sırasıyla, Locations API → City Search linkine tıklarsanız, karşınıza aşağıdaki gibi bir sayfa çıkıcaktır. Query Parameters kısmına size verilen API Keyini, aramak istediğiniz ilin ismini yazın ve Send this request butonuna tıklayın.
Herhangi bir API servisini kullanırken, kullanıcıya geri bildirimde bulunması için kullanılan bazı HTTP Kodları bulunur. Eğer istediği gönderdiğinizde size dönen HTTP kodu aşağıda olduğu gibi 200 ise bağlantınız başarılı bir şekilde gerçekleşmiş demektir. Diğer HTTP kodları için internetten daha detaylı araştırmalar yapabilirsiniz.
Ekran görüntüsündeki son 5 satıra odaklanırsanız, bize dönen çıktıyla ilgili detayları görüyoruz. Bizim aradığımız bilgi de zaten bunlardan biriydi. “Key” parametresine karşılık gelen değeri İstanbul’un son 24 saatlik verilerine erişmek için kenara not alalım.
Şimdi tekrardan Historical Current Conditions (past 24 hours) adresine geri dönelim ve{locationKey}
yazan bölüme bir önceki adımda yapmış olduğumuz sorgulama sonucu bulduğumuz 318521 kodunu yazalım.
İşte API isteğimiz sonucu dönen çıktımıza dair küçük bir bölüm :)
NOT: Yukarıdaki ekran görüntüsünde yer alan sütunların ne anlama geldiğini anlamak için Response Parameters alanını okuyabilirsiniz.
Aslında işlem adımlarımızın sonuna gelmiş bulunmaktayız. Ancak son aşama olarak görüntülediğimiz bu verileri daha detaylı incelemek için Python’ın Pandas DataFrame formatına getirelim.
5. Python Pandas DataFrame Oluşturma
Öncelikle kütüphane importlarımızı yapalım.
import pandas as pd
import requests
import json
Python’da bu veri setine ulaşmak için aynı sitede yaptığımız gibi API Key’ine ve sorgu sonuçlarımızın bulunduğu cURL adresine ihtiyacımız var.
NOT: cURL adresinizi bulmanız için cURL sekmesine tıklamız yeterli!
# API servisinin sağlamış olduğu API keyi
api_key = "YOUR_API_KEY"
# Çıktılarımızın olduğu url adresi
base_url = "http://dataservice.accuweather.com/currentconditions/v1/318521/historical/24?apikey={api_key}&details=true"
# URL adresine istek atma
response = requests.get(base_url)
response
Eğer yukarıdaki kod bloğunu çalıştırdığınızda <Response [200]>
çıktısını görüyorsanız, bağlantıyı başarılı bir şekilde gerçekleştirdiniz demektir.
Birçok firma verileri json formatında paylaşmayı tercih ettiği için bizim de bu dönüşümü yapmamız gerekiyor.
weather_data = response.json()
weather_data
Çıktı olarak aşağıdaki gibi sitede gördüğümüz json formatındaki veriyi görmemiz gerekiyor.
Son olarak da elde ettiğimiz bu verileri bir Pandas DataFrame formatına çevirelim ve üzerinde istediğimiz çalışmaya yapabilelim. Artık veri setimiz hazır :)
# DataFrame oluşturma
weather_df = pd.DataFrame(weather_data, columns=weather_data[0].keys())
weather_df.sample(5)
NOT: Başta da bahsettiğimiz gibi her sitenin API kullanımında, yapılacak işlem adımları genellikle bu şekilde olsa da, zaman zaman küçük farklılıklar olabilmektedir. Hatta Spotify gibi büyük şirketlerin API servislerini kullanabilmek için geliştirilen Spotipy isminde Python kütüphaneleri de mevcuttur. Bu sebeple işe koyulmadan önce, sitelerde paylaşılan dokümantasyonları dikkatli bir şekilde okumayı ihmal etmeyin!