close
Ana içeriğe atla

Python API’lerinde Uzmanlaşma: Python’da API Geliştirme ve Kullanma için Kapsamlı Rehber

Bir Python API’sini kullanarak sistemleri bağlamayı ve projelerinize gerçek zamanlı veri kazandırmayı öğrenin. Verileri nasıl alacağınızı, göndereceğinizi ve işleyeceğinizi keşfedin; uygulamalarınızı dinamik ve duyarlı hale getirin.
Güncel 22 Nis 2026  · 8 dk. oku

API’ler (uygulama programlama arayüzleri), modern yazılım geliştirmenin gerçek kahramanlarıdır. Farklı yazılım sistemlerinin birbiriyle iletişim kurmasını sağlar, böylece hizmetleri entegre etmek ve uygulamalar inşa etmek mümkün olur. API’leri ustalıkla kullanmak, özellikle geliştiriciyseniz ve Python’da verilerle çalışmak istiyorsanız, önemli bir beceridir. Bu beceriyi öğrendiğinizde web uygulamaları geliştirebilir, harici hizmetlere bağlanabilir ya da hatta makine öğrenmesi projelerinde gerçek zamanlı veriler kullanabilir hale gelerek açılacak kapılar sizi şaşırtabilir.

Bu rehberde API dünyasını keşfedecek, Python’da nasıl kullanılacağını, FastAPI ile kendi API’nizi nasıl geliştireceğinizi ve kaçınılmaz olarak karşınıza çıkacak yaygın zorlukların nasıl ele alınacağını öğreneceğiz. Bu eğitimin sonunda, projelerinizde API’leri nasıl kullanacağınıza dair sağlam bir anlayışa sahip olacak, geliştirme sürecinizi daha verimli, uygulamalarınızı daha güçlü hale getireceksiniz. Eğer tüm bu bilgiler arasında takılırsanız, her bir bölümü ayrıntılı biçimde ele alan Python’da API’lere Giriş kursumuzu deneyin.

API nedir?

API, farklı yazılım uygulamaları arasında bir köprü gibidir. Bu uygulamaların birbirleriyle iletişim kurmasına ve bilgi paylaşmasına olanak tanır.

Bir restoran metaforunu düşünün: Garsona ne istediğinizi söylersiniz (siparişiniz), o da talebinizi mutfağa iletir. Mutfak yemeğinizi hazırlar, garson size geri getirir. Benzer şekilde, bir API’ye istek gönderirsiniz; o da isteğinizi işler ve sonuçları size döndürür.

Bunu daha somut hale getirelim: Örneğin bir halka açık API kullanarak borsa analizi için finansal verileri çekebilir ya da iklim tahmini modeli için gerçek zamanlı hava durumu verilerine erişebilirsiniz. Fark edeceğiniz üzere, API’ler özellikle büyük veri kümeleriyle çalışırken ve/veya gerçek zamanlı veri ihtiyacınız olduğunda kritik öneme sahiptir; aksi halde entegrasyon konusunda çok zorlanmayabilirsiniz.

Bir Python API’si nasıl çalışır

Bir Python API’si nasıl çalışır. Görsel: Napkin.AI

Python’da API Kullanımı

Python’da API’leri kullanmak, harici hizmetlerle etkileşim kurmanın, veri almanın ve uygulamalarınıza çeşitli işlevler entegre etmenin güçlü bir yoludur. Python, bunu öncelikle requests kütüphanesiyle basit ve verimli hale getirir; bu kütüphane, API’lerle etkileşim kurmak için HTTP istekleri göndermenizi sağlar.

Python’da API’lere Giriş

Python’da API’lerle etkileşim, requests kütüphanesi sayesinde oldukça yalındır. Bu kütüphane, HTTP istekleri göndermeyi basitleştirir; API’lerle iletişim kurarak veri alıp gönderebilmenizi sağlar.

Python’da API isteği yapmak

Python’da API istekleri yapmaya başlamadan önce requests kütüphanesine ihtiyacınız olacak. Şu komutla kurabilirsiniz:

pip install requests

API isteklerinin temelleri

Restoran örneğimizi Python’da gerçekten neler olduğuyla birleştirelim. İşte basitleştirilmiş bir özet:

  1. Doğru Adresi Bulun: İsteğinizi göndereceğiniz belirli web adresi olan API uç noktasını belirleyin.

  2. Siparişinizi Verin: Python’un requests kütüphanesini kullanarak isteği API’ye gönderin. Hangi tür işlemi yapmak istediğinizi (örneğin veri çekmek ya da veri göndermek) belirtirsiniz.

  3. Yemeğinizi Alın: API bir yanıt döndürür; ihtiyacınız olan bilgiyi çıkarmak için bu yanıtı işlersiniz.

GET istekleri

GET isteği, bir sunucudan veri almak için kullanılan en yaygın HTTP isteği türüdür; bilgi istemeye benzer. Tarayıcınıza bir URL yazıp enter’a bastığınızda, aslında o sunucuya bir GET isteği gönderirsiniz; sunucu da istenen kaynağı bulup hazırlamak için isteği işler ve sonucu JSON veya XML gibi bir formatta geri yollar.

import requestsresponse = requests.get('https://api.example.com/data')data = response.json()print(data)

Bu örnekte kurgusal bir API’ye GET isteği gönderip JSON yanıtını yazdırıyoruz. GET istekleri genellikle veriyi değiştirmeden almak için kullanılır.

POST istekleri

GET istekleri veri çekerken, POST istekleri sunucuya talimat gönderir. Sıklıkla yeni kaynaklar oluşturmak (ör. kullanıcı eklemek) veya mevcut olanları güncellemek (ör. profil düzenlemek) için kullanılır.

Bir hizmete kayıt olmak için çevrimiçi bir form doldurduğunuzu düşünün. Gönder’e tıkladığınızda, aslında bilgilerinizi içeren bir POST isteği gönderirsiniz. İşte basitleştirilmiş bir örnek:

# Data to send (like user information)data = {'name': 'John Doe', 'email': 'john.doe@example.com'}# Send the data to the API (replace the URL with the actual API endpoint)response = requests.post('https://api.example.com/users', json=data)# Check if the request was successful (usually a status code of 201 for creation)if response.status_code == 201:    print("User created successfully!")else:    print("Error:", response.status_code)

Bu örnek, kullanıcı bilgilerini içeren bir sözlüğü JSON olarak API’ye gönderir. Ardından, kullanıcının başarıyla oluşturulup oluşturulmadığını görmek için yanıt durum kodunu kontrol ederiz.

Yanıtları işleme

Bir API isteği yaptığınızda, sunucu iki temel bilgiyi içeren bir yanıt döndürür:

  • Durum Kodu: İsteğin başarıya ulaşıp ulaşmadığını gösteren bir sayıdır. Örneğin 200 genellikle başarıyı, 404 ise kaynağın bulunamadığını ifade eder.
  • Veri: İstediğiniz bilgi genellikle JSON formatındadır. Değerli içerik burada yer alır.

İşte bir Python örneği:

response = requests.get('https://api.example.com/data')if response.status_code == 200:    data = response.json()    print(data)   else:    print(f"Request failed with status code {response.status_code}")   

Python API Durum Kodlarını Anlama

API durum kodları, sunucuların bir istemci isteğinin sonucunu belirtmek için gönderdiği standartlaştırılmış yanıtlardır. Bu kodlar, bir isteğin başarılı olup olmadığını, bir hata oluşup oluşmadığını veya ek bir işleme ihtiyaç duyulup duyulmadığını geliştiricilerin anlamasına yardımcı olur.

Yaygın durum kodları

  • 200 OK: Bu kod, isteğin başarılı olduğunu gösterir. Örneğin bir API’den veri almak için GET isteği yaptığınızda, 200 OK yanıtı verinin doğru şekilde getirildiği anlamına gelir.  

  • 404 Not Found: Sunucu istenen kaynağı bulamadığında döner. Örneğin var olmayan bir uç noktaya erişmeye çalışırsanız, 404 Not Found hatası alırsınız.

  • 500 Internal Server Error: Sunucu tarafında bir şeylerin ters gittiğini belirtir. Sunucu kodundaki hatalar veya veritabanı sorunları gibi çeşitli nedenlerle ortaya çıkabilen genel bir hata mesajıdır.

Farklı durum kodlarını ele alma

Python uygulamalarınızda API durum kodlarını etkili biçimde ele almak, kodunuzun öngörülebilir davranmasını ve hataları zarifçe yönetmesini sağlar. Yanıt 200 ise, dönen veriyi işlemeye devam edin. 404 hatasında, uç nokta URL’sinin doğru olup olmadığını kontrol edin; gerekirse yedek mantık uygulayın veya kullanıcıyı kaynağın mevcut olmadığı konusunda bilgilendirin. 500 hatalarında, kısa bir gecikmeden sonra isteği yeniden denemeyi ya da hatayı daha fazla inceleme için günlüğe kaydetmeyi düşünün. Ancak, sunucuyu aşırı yüklememek için aşırı denemelerden kaçının.

Python API’leri Geliştirme

Python ile API geliştirmek, güçlü ve verimli uygulama arayüzleri oluşturmanızı sağlar. Python’un yalınlığı ve güçlü kütüphaneleri, API geliştirme için onu mükemmel bir seçenek yapar.

FastAPI’ye Giriş

Artık API’leri nasıl kullanacağınızı bildiğinize göre, kendi API’mizi nasıl geliştirebileceğimize bakalım. FastAPI, Python ile API geliştirmek için modern, hızlı (yüksek performanslı) bir web çatısıdır. Adından da anlaşılacağı üzere kullanımı kolay olacak şekilde tasarlanmıştır. FastAPI’nin sevdiğim yönlerinden biri de etkileşimli dokümantasyonu otomatik olarak üretmesidir.

FastAPI kurulumu

Başlamak için Python’un ve paket yöneticisi pip’in kurulu olması gerekir. Ardından, yüksek performanslı bir ASGI sunucusu olan FastAPI ve Uvicorn’u kurun:

pip install fastapi uvicorn

Not: Python veya pip kurulumu ile ilgili sorun yaşarsanız şu eğitimimize göz atın: Windows, MacOS ve Linux’ta Python ve Pip Nasıl Yükseltilir.

Basit bir API oluşturma

Basit bir selamlama döndüren yalın bir API oluşturalım:

from fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root():    return {"Hello": "World"}

Bu API’yi başlatmak için şu komutu çalıştırın:

uvicorn main:app --reload

Bu komut, API’nizi http://127.0.0.1:8000 adresinde sunan Uvicorn sunucusunu başlatır. Bu URL’yi tarayıcınızda açtığınızda {"Hello": "World"} yanıtını görürsünüz.

FastAPI’nin Gelişmiş Özellikleri

FastAPI yalnızca hızlıca basit API’ler oluşturmakla ilgili değildir; aynı zamanda karmaşık ve yüksek performanslı uygulamalar için uygun kılan birçok gelişmiş özellik de sunar. İşte başlıca yeteneklerinden bazıları: 

Sorgu parametreleri

FastAPI’de sorgu parametrelerini eklemek ve ele almak, Python’un tür ipuçlarına dayanması sayesinde basittir. Sorgu parametreleri URL’nin bir parçasıdır ve çoğunlukla dönen veriyi filtrelemek veya değiştirmek için uç noktaya isteğe bağlı veriler geçmekte kullanılır.

Sorgu parametreleri ekleme

FastAPI’de bir sorgu parametresi eklemek için, onu yol işlemi fonksiyonunuzda bir fonksiyon argümanı olarak tanımlamanız yeterlidir. Parametre isteğe bağlıysa, None gibi bir varsayılan değer atayabilirsiniz. Örneğin, bir veritabanından öğeleri alan bir uç noktanız olduğunu varsayalım. Kullanıcıların bir arama sorgusuyla öğeleri filtrelemesine izin vermek istiyorsunuz:

app = FastAPI()@app.get("/items/")def read_items(q: str = None):    if q:        return {"items": ["Item 1", "Item 2", "Item 3"], "query": q}    return {"items": ["Item 1", "Item 2", "Item 3"]}

Bu örnekte q, isteğe bağlı bir sorgu parametresidir. q için bir değer sağlarsak, sonuçlar bu sorguya göre filtrelenir. q verilmezse uç nokta tüm öğeleri döndürür.

Sorgu parametrelerini ele alma

FastAPI, tür doğrulama ve dönüştürme dahil olmak üzere sorgu parametrelerini otomatik olarak yönetir. Örneğin bir sorgu parametresini tamsayı olarak belirtirseniz, FastAPI girdinin gerçekten tamsayı olduğunu doğrular. Girdi beklenen türle eşleşmezse, FastAPI açık bir hata mesajı döndürür.

İşte zorunlu bir sorgu parametresi ve tür doğrulaması içeren bir örnek:

@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None):    return {"item_id": item_id, "query": q}

Bu durumda, item_id bir yol parametresi, q ise isteğe bağlı bir sorgu parametresidir. FastAPI, item_id’nin bir tamsayı olmasını sağlar ve sağlanırsa q sorgu parametresini işler.

Farklı HTTP yöntemlerini ele alma

GET, POST, PUT ve DELETE gibi farklı HTTP yöntemlerini uygulamak basittir ve diğer çatıların rota tanımlama mantığını yansıtır. Her yöntem, veri alma (GET), yeni veri oluşturma (POST), mevcut veriyi güncelleme (PUT) veya veri silme (DELETE) gibi belirli bir işlem türüne karşılık gelir.

GET yöntemi

GET yöntemi, sunucudan veri almak için kullanılır. FastAPI’de bir GET uç noktası şöyle tanımlanır:

@app.get("/items/")def get_items():    return {"items": ["Item 1", "Item 2", "Item 3"]}

POST yöntemi

POST yöntemi yeni veri oluşturmak için kullanılır. Bir POST uç noktası tanımlayıp istek gövdesinde veri alabilirsiniz:

@app.post("/items/")def create_item(item: dict):    return {"item": item}

PUT yöntemi

PUT yöntemi mevcut veriyi güncellemek için kullanılır. Genellikle hem bir tanımlayıcıya hem de yeni veriye ihtiyaç duyar:

@app.put("/items/{item_id}")def update_item(item_id: int, item: dict):    return {"item_id": item_id, "updated_item": item}

DELETE yöntemi

DELETE yöntemi veri silmek için kullanılır. FastAPI’de bir DELETE uç noktası şöyle tanımlanır:

@app.delete("/items/{item_id}")def delete_item(item_id: int):    return {"message": f"Item {item_id} deleted"}

Kimlik doğrulama ve güvenlik

FastAPI, kimlik doğrulama ve güvenliği uygulamak için çeşitli mekanizmalar sunar:

  • HTTP Basic Auth: Basit bir yöntemdir, ancak güvenlik endişeleri nedeniyle üretim ortamları için genellikle önerilmez.
  • API Anahtarları: İstemciler için benzersiz anahtarlar üretmeyi içeren daha güvenli bir seçenektir.
  • OAuth 2.0: Üçüncü taraf entegrasyonlarında yaygın olarak kullanılan, yetkilendirme için karmaşık ama sağlam bir standarttır.
  • JSON Web Token’ları (JWT): İki taraf arasında talepleri güvenli şekilde temsil etmek için popüler bir yaklaşımdır.

Python API Performansına İlişkin Hususlar

Bazı Python API performans hususlarını düşünelim.

API isteklerinin verimliliği

API isteklerinin verimliliği, uygulamanızın genel performansını önemli ölçüde etkileyebilir. Farklı API istek yöntemlerinin zaman karmaşıklıkları değişir:

  • GET İstekleri: Genellikle hızlıdır; çünkü sunucuda değişiklik yapmadan veri almak üzere tasarlanmıştır. Ancak büyük veri kümelerinde performans düşebilir.
  • POST İstekleri: Veri işleme veya depolama için sunucuya veri gönderdiklerinden daha uzun sürebilir.
  • PUT ve DELETE İstekleri: Buradaki zaman karmaşıklığı, sunucunun yanıt süresine ve yapılan işlemlere bağlı olarak değişebilir.

Verimliliği artırmak için, gönderilen veya alınan verinin boyutunu en aza indirin ve mümkün olduğunda toplu işlemler kullanmayı düşünün.

API kullanımını optimize etme

Python’da API çağrılarınızın performansını optimize etmek için bazı ipuçları:

  • Toplu İstekler: Mümkün olduğunda birden fazla API çağrısını tek bir istekte birleştirerek ek yükü azaltın.
  • Yanıtları Önbellekleme: Sık istenen verileri yerelde saklayarak API çağrılarının sayısını azaltın.
  • Eşzamansız İstekler: aiohttp gibi eşzamansız kütüphaneleri kullanarak birden fazla isteği aynı anda ele alın, bekleme sürelerini azaltın.
  • Bağlantı Havuzu: Her istek için yeni bir bağlantı oluşturmak yerine bağlantıları yeniden kullanın; bu, gecikmeyi azaltabilir.

Yaygın Python API Hataları ve Nasıl Ele Alınır

API’lerle çalışırken, uygulamanızın işlevselliğini bozabilecek çeşitli hatalarla karşılaşabilirsiniz. İşte iki yaygın sorun ve bunları etkili şekilde nasıl ele alabileceğiniz.

Zaman aşımı hatalarını ele alma

Zaman aşımı hataları, bir API isteği ayrılan süre içinde yanıt alamadığında ortaya çıkar. Bu hatalar; ağ tıkanıklığı, sunucu aşırı yüklenmesi, kapsamlı veri işleme veya API oran sınırlamaları gibi çeşitli etkenlerden kaynaklanabilir. Bu hataları ele almak için zaman aşımı süresini uzatma, üssel geri çekilme (exponential backoff) ile yeniden deneme mekanizmaları kullanma, istek yüklerini optimize etme ve eşzamansız programlamadan yararlanma gibi stratejiler önerilir. Ayrıca, zaman aşımı nedenlerini belirlemek ve gerekli önlemleri uygulamak için sağlam hata yönetimi ve günlükleme uygulamalarını hayata geçirmek de faydalıdır.

Oran sınırlamalarını yönetme

API’ler, kötüye kullanımı önlemek, adil tüketimi garanti etmek ve hizmet istikrarını korumak için sıklıkla oran sınırlamaları uygular. Genellikle dakika veya saat başına istek sayısı olarak ifade edilen bu sınırlamalar, belirli bir zaman aralığında yapılabilecek toplam istek sayısına üst sınır koyar. Bu eşikler aşılırsa geçici engellemeler, yavaş yanıtlar veya API erişiminin tamamen reddi söz konusu olabilir. Oran sınırlamalarını yönetmek için üssel geri çekilme gibi teknikler kullanın, önbelleklemeden yararlanın ve API kullanımını dikkatle izleyin. Hizmet kesintilerini önlemek için API’nin özel oran sınırı politikalarını anlamak esastır.

Standart API İsteklerine Alternatifler

Verilere erişmek için genellikle API’ler tercih edilir; ancak bazı durumlarda alternatifler daha uygun olabilir. Aşağıda, Python’da standart API istekleri yerine kullanılabilecek iki yaygın alternatif yer alıyor.

Web scraping kullanma

API’ler kullanılamadığında, yetersiz kaldığında veya pratik olmadığında, web scraping web sitelerinden veri çekmek için kullanılan bir tekniktir. HTML metnini işleyerek aksi halde erişilemeyebilecek bilgilere ulaşabilirsiniz. Ancak web sitelerinin hizmet şartlarına uymak, sunucuları aşırı yüklememek ve etik ile hukuki sonuçları dikkate almak önemlidir. BeautifulSoup, Scrapy ve Selenium gibi bilinen Python modülleri web scraping’i kolaylaştırır.

Doğrudan veritabanı erişimi

Doğrudan veritabanı erişimi, API’lere kıyasla veri almada daha doğrudan ve potansiyel olarak daha hızlı bir yaklaşım sunar. Gerekli izinlere ve veritabanı yapısına net bir hakimiyete sahipseniz, API sınırlamalarını aşabilir ve SQLAlchemy veya psycopg2 gibi araçlarla özel sorgular çalıştırabilirsiniz. Ancak bu yöntem, güvenlik, performans ve veri bütünlüğü açısından dikkatli değerlendirme gerektirir; çünkü doğrudan veritabanı etkileşimleri doğru yönetilmezse güvenlik açıklarına yol açabilir.

Sonuç

Artık API oluşturmanın ve kullanmanın temellerini, esnek FastAPI çatısını nasıl kullanacağınızı biliyorsunuz. Ayrıca, oran sınırlamaları ve zaman aşımı gibi sık karşılaşılan engelleri nasıl aşacağınızı da öğrendiniz. Etkili API etkileşimi, büyük veri kümelerinden yararlanıp yaratıcı çözümler geliştirmenizi sağladığı için modern Python geliştirmenin vazgeçilmezidir. 

Elbette süreçler sürekli değişiyor. Uzmanlaşmanın anahtarları; deneme-yanılma, sürekli öğrenme ve gerçek dünyada uygulamadır. DataCamp’in Python’da API’lere Giriş kursu gibi kaynaklara bu yüzden bu kadar emek veriyoruz; böylece gerçekten pratik yapıp uzmanlaşabilirsiniz. Ayrıca pandas ile Kolaylaştırılmış Veri Alımı kursumuz da harika bir seçenek. Bugün kaydolun!


Oluseye Jeremiah's photo
Author
Oluseye Jeremiah
LinkedIn

Yapay zekâ, makine öğrenimi ve veri bilimi alanlarında uzmanlaşmış teknik yazar; karmaşık fikirleri anlaşılır ve erişilebilir kılar.

Konular

DataCamp ile Python Öğrenin

Kurs

Python’a Giriş

4 sa
6.8M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow