API Nedir? Adım Adım API Kullanımı

Ata Özarslan
İstanbul Data Science Academy

--

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 Çalışma Mantığı

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.

Sıklıkla Kullanılan WEB API Kategorileri

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.

Çok Bilinen ve Kullanılan API Servisleri

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.

API Servisi Kullanmak için Yapılması Gereken Temel İşlem Adımları

Ş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.

AccuWeather API Servisine Kayıt Olma

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.

Yeni App Oluşturma

App oluşturma ekranında sizi bazı sorular karşılayacak, bunlara uygun cevaplar vererek app oluşturma adımını tamamlayınız.

API Kullanımıyla İlgili Sorulara Cevap Verme

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.

weather_api İsimli Appi Oluşturma

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!

API Key’ine Ulaşma

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.

AccuWeather API Servisleri

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.

Gerekli Parametrelerin Girilmesi

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.

API Servisine Atılan İstek Sonucu Dönen Çıktı

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.

İstanbul İlindeki Son 24 Saatlik Verilere Erişme

İşte API isteğimiz sonucu dönen çıktımıza dair küçük bir bölüm :)

Veri İçeriğine Dair Küçük Bir Kesit

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.

Veri İçeriğine Dair Küçük Bir Kesit

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)
AccuWeather API Servisini Kullanarak Elde Ettiğimiz Verilerden 5 Satırlık Bir Kesit

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!

--

--