Günümüzün hızla gelişen dijital dünyasında, API'ler (Uygulama Programlama Arayüzleri), farklı yazılım uygulamalarının birbiriyle iletişim kurmasını sağlayan yapı taşlarıdır. İster bir mobil uygulama geliştiriyor, ister üçüncü taraf hizmetlerle entegre ediyor, isterse sağlam bir web platformu oluşturuyor olun, çeşitli API çağrı türlerini anlamak esastır. Peki, API çağrıları nedir ve nasıl çalışırlar? Bu konuya derinlemesine dalalım, farklı API çağrı türlerini ve modern yazılım geliştirmede neden önemli olduklarını inceleyelim.
API Çağrısı Nedir?
Temel bilgilerle başlayalım. Bir API çağrısı, temelde bir yazılım uygulamasının diğerine yaptığı, veri veya gerçekleştirilecek eylemler isteyen bir istektir. Farklı yazılım parçalarının iletişim kurması ve kaynakları paylaşması için bir yol olarak düşünebilirsiniz. Bir API çağrısı yapıldığında, talep eden uygulama sunucudan bilgi ister ve sunucu istenen verilerle yanıt verir. Bu alışveriş, platformlar ve cihazlar arasında kesintisiz işlevsellik sağlayarak, milisaniyeler içinde gerçekleşir.
API'ler çeşitli kategorilere ayrılabilir ve API çağrı türlerini anlamak, geliştiricilerin projeleri için doğru yaklaşımı seçmelerine yardımcı olabilir. Peki, ne tür API çağrıları vardır? İnceleyelim.
API Çağrı Türlerini Anlamak
API'ler, farklı uygulamaları bir arada tutan yapıştırıcı gibidir. Uygulamanın ihtiyaçlarına bağlı olarak çok çeşitli şekillerde kullanılabilirler. İşte en yaygın API çağrı türlerinin bir dökümü:

1. GET İstekleri
GET istekleri, en yaygın API çağrı türüdür. Adından da anlaşılacağı gibi, bir GET isteği bir sunucudan veri almak için kullanılır. Bir ürün listesini görüntülemek için bir web sitesini ziyaret ettiğinizi düşünün. Bir ürün hakkında daha fazla ayrıntı görüntülemek için bir bağlantıya tıkladığınızda, tarayıcınız sunucuya bir GET isteği gönderir. Sunucu daha sonra ürün ayrıntılarını geri göndererek yanıt verir ve bunlar ekranınızda görüntülenir.
GET istekleri basit, verimlidir ve çeşitli uygulamalarda yaygın olarak kullanılır. Aynı isteği birden çok kez yapmanın aynı sonucu vereceği anlamına gelen idempotent olarak kabul edilirler. Bu, resimler, ürün ayrıntıları veya kullanıcı profilleri gibi statik verileri almak için özellikle kullanışlıdır.
Örnek:
GET /api/products/12345 HTTP/1.1
Host: www.example.com
2. POST İstekleri
Sırada, bir kaynak oluşturmak veya güncellemek için sunucuya veri göndermek için kullanılan POST isteği var. Veri almak için kullanılan GET isteklerinin aksine, POST istekleri veri göndermek için kullanılır. Örneğin, bir web sitesinde bir form doldurup "Gönder" düğmesine tıkladığınızda, form verileriyle birlikte sunucuya bir POST isteği gönderilir.
POST istekleri idempotent değildir, yani aynı POST isteğini birden çok kez göndermek birden çok kayıt oluşturabilir. Bu nedenle, POST istekleri genellikle yeni bir kullanıcı hesabı oluşturma, bir iletişim formu gönderme veya ödeme yapma gibi eylemler için kullanılır.
Örnek:
POST /api/products HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"name": "Yeni Ürün",
"price": 29.99,
"description": "Yepyeni bir ürün"
}
3. PUT İstekleri
PUT istekleri, POST isteklerine benzer, ancak önemli bir farkla: PUT istekleri, mevcut bir kaynağı güncellemek için kullanılır. Bir PUT isteği gönderdiğinizde, sunucuya mevcut kaynağı sağladığınız verilerle değiştirmesini söylersiniz.
PUT istekleri de idempotenttir, yani aynı isteği birden çok kez yapmak aynı sonucu verecektir. Bu, PUT isteklerini kullanıcı profillerini güncellemek, ürün ayrıntılarını değiştirmek veya ayarları değiştirmek için ideal hale getirir.
Örnek:
PUT /api/products/12345 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"name": "Güncellenmiş Ürün",
"price": 24.99,
"description": "Ürün için güncellenmiş bir açıklama"
}
4. DELETE İstekleri
Adından da anlaşılacağı gibi, DELETE istekleri, bir kaynağı sunucudan silmek için kullanılır. Envanterinizden bir ürün veya veritabanınızdan bir kullanıcı gibi bir kaydı kaldırmanız gerekiyorsa, bir DELETE isteği yapmanız gerekir.
DELETE istekleri tipik olarak idempotenttir. Mevcut olmayan bir kaynak için bir DELETE isteği göndermek herhangi bir zarara neden olmaz ve sonuç, kaynağın var olup olmamasına bakılmaksızın aynı olacaktır.
Örnek:
DELETE /api/products/12345 HTTP/1.1
Host: www.example.com
5. PATCH İstekleri
PATCH istekleri, mevcut bir kaynakta kısmi güncellemeler yapmak için kullanılır. Tüm kaynağı değiştiren PUT isteklerinin aksine, PATCH istekleri yalnızca belirtilen alanları değiştirir. Bu, bir kaynağın yalnızca küçük bir bölümünü güncellemeniz gerektiğinde PATCH isteklerini daha verimli hale getirir.
PATCH istekleri, bir kullanıcının e-posta adresini değiştirmek veya bir ürünün stok miktarını güncellemek gibi küçük güncellemeler yapmak için özellikle kullanışlıdır.
Örnek:
PATCH /api/products/12345 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"price": 19.99
}
6. OPTIONS İstekleri
OPTIONS istekleri, şimdiye kadar tartıştıklarımızdan biraz farklıdır. Veri almak veya değiştirmek için kullanılmak yerine, OPTIONS istekleri, bir sunucu veya uç nokta tarafından hangi HTTP yöntemlerinin desteklendiğini öğrenmek için kullanılır. Bu, genellikle bir sunucunun belirli bir etki alanından belirli HTTP yöntemlerine izin verip vermediğini kontrol etmek için Cross-Origin Resource Sharing (CORS) senaryolarında kullanılır.
Bir OPTIONS isteği yapıldığında, sunucu izin verilen yöntemlerin (örneğin, GET, POST, PUT, DELETE) bir listesiyle yanıt verir. Bu, istemcilerin sunucuda hangi eylemleri gerçekleştirebileceklerini anlamalarına yardımcı olur.
Örnek:
OPTIONS /api/products/12345 HTTP/1.1
Host: www.example.com
7. HEAD İstekleri
Bir HEAD isteği bir GET isteğine benzer, ancak önemli bir farkla: Yanıtın gövdesini değil, yalnızca başlıklarını döndürür. Bu, bir kaynağın durumunu kontrol etmeniz veya tüm kaynağı indirmeden meta verilerini incelemeniz gerektiğinde kullanışlıdır.
HEAD istekleri genellikle bir kaynağın var olup olmadığını kontrol etmek, boyutunu belirlemek veya en son ne zaman değiştirildiğini görmek için kullanılır.
Örnek:
HEAD /api/products/12345 HTTP/1.1
Host: www.example.com
8. TRACE İstekleri
TRACE istekleri, alınan isteği geri yansıtmak için kullanılır ve istemcinin ara sunucuların isteği alıp almadığını veya değiştirdiğini görmesini sağlar. Bu, bir isteğin ara sunucular veya ağ geçitlerinden geçerken nasıl değiştirildiğini belirlemeye yardımcı olduğundan, hata ayıklama amaçları için yararlı olabilir.
Ancak, TRACE istekleri, hassas bilgileri açığa çıkarabildikleri ve güvenlik riskleri oluşturabildikleri için modern geliştirmede nadiren kullanılır.
Örnek:
TRACE /api/products/12345 HTTP/1.1
Host: www.example.com
9. CONNECT İstekleri
CONNECT yöntemi, HTTP üzerinden bir web sunucusuna bir ağ bağlantısı kurmak için kullanılır. Öncelikli olarak, istemcinin sunucudan bir hedefe bir tünel oluşturmasını istediği ve güvenli iletişime izin veren HTTPS bağlantıları için kullanılır.
CONNECT istekleri en sık proxy sunucularında görülür ve istemci ile sunucu arasındaki güvenli iletişimi kolaylaştırmak için kullanılır.
Örnek:
CONNECT www.example.com:443 HTTP/1.1
Host: www.example.com
10. WebSocket İstekleri
WebSocket istekleri, şimdiye kadar tartıştığımız tipik HTTP yöntemlerinden biraz farklıdır. WebSockets, tek, uzun ömürlü bir bağlantı üzerinden çift yönlü iletişim kanalları sağlar. Bu, istemci ve sunucu arasında gerçek zamanlı veri aktarımına izin verir; bu, sohbet uygulamaları, canlı spor güncellemeleri veya çevrimiçi oyun gibi uygulamalarda özellikle kullanışlıdır.
WebSocket istekleri geleneksel HTTP yöntemlerinin bir parçası olmasa da, modern web geliştirmede, kesintisiz, gerçek zamanlı etkileşimleri mümkün kılarak önemli bir rol oynarlar.
Örnek:
const socket = new WebSocket('ws://www.example.com/socket');
11. GraphQL Sorguları
GraphQL, istemcilerin belirli verileri talep etmesine izin veren, ağ üzerinden aktarılan veri miktarını azaltan API'ler için bir sorgu dilidir. Farklı veri parçalarını getirmek için birden fazla uç noktaya ihtiyaç duyulabilen REST API'lerinin aksine, GraphQL, istemcilerin tek bir istekte tam olarak ihtiyaç duydukları şeyi sorgulamasına olanak tanır.
GraphQL sorguları, sorgular (veri almak için), mutasyonlar (verileri değiştirmek için) ve abonelikler (gerçek zamanlı güncellemeler için) gibi birden fazla işlem türünü içerebilir.
Örnek:
query {
product(id: "12345") {
name
price
description
}
}
Apidog'da GET İstekleri Gönderin ve Test Edin
Apidog , API etkileşimlerinin karmaşıklıklarını basitleştirmek için tasarlanmış, çok yönlü ve kullanıcı dostu bir API dokümantasyon ve test aracıdır. Apidog, özelleştirilebilir, görsel olarak çekici API yanıt dokümantasyonu ve onaylamalar ve test dalları ile kullanıcı dostu test araçları konusunda mükemmeldir.

Özellikle kullanım kolaylığı için tasarlanan Apidog, GET istekleri göndermek ve test etmek için hızlı ve görsel bir araç sağlar. Kullanıcı dostu arayüzü, geliştiricilere karmaşık API uç noktalarını basit bir şekilde tanımlama, çeşitli test senaryolarını zahmetsizce ayarlama ve testleri gerçek zamanlı olarak, hepsi sezgisel bir platformda yürütme olanağı sağlar.
Geliştiriciler, GET isteklerini test etme sürecini kolaylaştırmak için Apidog'un görsel yeteneklerinden yararlanabilir ve bu da onu, API testine basitlik, verimlilik ve entegre bir yaklaşım değer verenler için önerilen bir seçim haline getirir.
API Yanıtlarını Anlamak
Farklı API çağrı türlerini ele aldığımıza göre, API yanıtlarının doğasını da anlamak önemlidir. Bir API çağrısı yapıldığında, sunucu yalnızca istenen verileri değil, aynı zamanda isteğin durumu gibi ek bilgileri de içeren bir yanıt gönderir.
HTTP Durum Kodları
HTTP durum kodları, API yanıtlarının önemli bir parçasıdır. İsteğin başarılı olup olmadığını veya bir hata olup olmadığını gösterirler. İşte karşılaşabileceğiniz en yaygın durum kodlarından bazıları:
- 200 OK: İstek başarılıydı ve sunucu istenen verileri döndürdü.
- 201 Created: İstek başarılıydı ve yeni bir kaynak oluşturuldu.
- 400 Bad Request: Geçersiz sözdizimi nedeniyle sunucu isteği anlayamadı.
- 401 Unauthorized: İstemci, istenen yanıtı almak için kendini doğrulamalıdır.
istek.
- 403 Forbidden: İstemcinin istenen kaynağa erişme izni yok.
- 404 Not Found: Sunucu istenen kaynağı bulamadı.
- 500 Internal Server Error: Sunucu bir hatayla karşılaştı ve isteği tamamlayamadı.

Veri Biçimleri
API yanıtları genellikle verileri belirli biçimlerde içerir. En yaygın biçimler şunlardır:
- JSON (JavaScript Object Notation): JSON, okunması ve yazılması kolay, hafif bir veri biçimidir. API yanıtları için en sık kullanılan biçimdir.
- XML (eXtensible Markup Language): XML, JSON'dan daha ayrıntılı olan başka bir veri biçimidir. Hala bazı API'lerde, özellikle eski olanlarda kullanılmaktadır.
- HTML: Bazı durumlarda, API yanıtları, özellikle API web sayfalarını oluşturmak için kullanılıyorsa, HTML içerebilir.
Başlıklar
API yanıtları ayrıca yanıt hakkında ek bilgiler sağlayan başlıklar içerir. Yaygın başlıklar şunlardır:
- Content-Type: Verilerin biçimini gösterir (örneğin,
application/json
). - Content-Length: Yanıt gövdesinin boyutunu belirtir.
- Authorization: İstek kimlik doğrulaması gerektiriyorsa kimlik doğrulama bilgilerini içerir.
Farklı API Çağrı Türleri Ne Zaman Kullanılır?
API çağrı türlerini anlamak çok önemlidir, ancak her türü ne zaman kullanacağınızı bilmek de aynı derecede önemlidir. Farklı API çağrı türlerinin uygun olacağı bazı senaryoları inceleyelim.
Veri Alma: GET İsteklerini Kullanın
Bir sunucudan veri almanız gerektiğinde, GET isteği sizin için en iyi seçenektir. İster kullanıcı ayrıntılarını, ister ürün bilgilerini veya bir kaynak listesini getiriyor olun, GET istekleri verileri verimli bir şekilde almak için tasarlanmıştır.
Veri Gönderme: POST İsteklerini Kullanın
Yeni bir kullanıcı hesabı oluşturmak veya bir form göndermek gibi sunucuya veri göndermeniz gerektiğinde, POST isteği doğru seçimdir. POST istekleri, işlenmek üzere sunucuya veri göndermek için kullanılır ve yeni kaynaklar oluşturmak için idealdir.
Veri Güncelleme: PUT veya PATCH İsteklerini Kullanın
Mevcut bir kaynağı güncellemeniz gerekiyorsa, iki seçeneğiniz vardır: PUT veya PATCH istekleri. Tüm kaynağı değiştirmek istiyorsanız PUT'u kullanın ve yalnızca belirli alanları güncellemeniz gerekiyorsa PATCH'i kullanın. Her iki yöntem de verileri güncellemek için etkilidir, ancak PATCH genellikle küçük değişiklikler için daha verimlidir.
Veri Silme: DELETE İsteklerini Kullanın
Bir kaynağı sunucudan kaldırmak için bir DELETE isteği kullanın. DELETE istekleri basittir ve bir ürünü bir katalogdan kaldırmak veya bir kullanıcı hesabını silmek gibi verileri silmeniz gerektiğinde en iyi seçenektir.
Mevcut Yöntemleri Kontrol Etme: OPTIONS İsteklerini Kullanın
Bir sunucu veya uç nokta tarafından hangi HTTP yöntemlerinin desteklendiğini öğrenmeniz gerekiyorsa, bir OPTIONS isteği kullanın. Bu, özellikle CORS içeren senaryolarda veya katı yöntem kısıtlamaları olan API'lerle çalışırken kullanışlıdır.
Hata Ayıklama: HEAD ve TRACE İsteklerini Kullanın
Hata ayıklama amaçları için, HEAD ve TRACE istekleri yararlı araçlar olabilir. HEAD istekleri, tam yanıtı indirmeden başlıkları incelemenize izin verirken, TRACE istekleri, isteğinizin ara sunucular tarafından nasıl işlendiğini görmenizi sağlar.
Güvenli Bağlantılar Kurma: CONNECT İsteklerini Kullanın
Özellikle proxy sunucular aracılığıyla güvenli bağlantılarla çalışırken, CONNECT istekleri esastır. Hedef sunucuya güvenli bir tünel oluşturmanıza izin vererek, şifreli iletişimi kolaylaştırırlar.
Gerçek Zamanlı Etkileşimler: WebSocket İsteklerini Kullanın
Sohbet uygulamaları veya canlı güncellemeler gibi gerçek zamanlı etkileşimler için, WebSocket istekleri en iyi yoldur. WebSockets, çift yönlü iletişimi etkinleştirerek, verilerin aynı anda gönderilmesine ve alınmasına olanak tanır.
Esnek Veri Alma: GraphQL Sorgularını Kullanın
Belirli verileri esnek ve verimli bir şekilde almanız gerekiyorsa, GraphQL sorgularını kullanmayı düşünün. GraphQL, tam olarak ihtiyacınız olan verileri talep etmenize olanak tanıyarak, aktarılan veri miktarını azaltır ve performansı artırır.
API Performansını Optimize Etme
API çağrı türlerini anlamak, denklemin yalnızca bir parçasıdır. Verimli ve ölçeklenebilir uygulamalar oluşturmak için, API performansını optimize etmek de önemlidir. İşte başlamanıza yardımcı olacak bazı ipuçları:
1. API Çağrılarını Azaltın
API performansını optimize etmenin en basit yollarından biri, uygulamanızın yaptığı API çağrılarının sayısını azaltmaktır. Bu, aşağıdakilerle başarılabilir:
- İstekleri toplama: Birden çok isteği tek bir API çağrısında birleştirin.
- Önbelleğe alma: Sık erişilen verileri gereksiz API çağrılarından kaçınmak için yerel olarak saklayın.
- GraphQL kullanma: GraphQL ile, gerekli tüm verileri tek bir istekte getirebilir, birden çok API çağrısı ihtiyacını azaltabilirsiniz.
2. Veri Yüklerini Optimize Edin
Ağ üzerinden büyük miktarda veri göndermek uygulamanızı yavaşlatabilir. Veri yüklerini optimize etmek için:
- Sayfalandırma kullanın: Büyük veri kümelerini, birden çok istekte getirilebilen daha küçük parçalara ayırın.
- Verileri sıkıştırın: Gönderilen verilerin boyutunu azaltmak için veri sıkıştırma tekniklerini kullanın.
- Verileri filtreleyin: Tüm kaynakları almak yerine, yalnızca ihtiyacınız olan verileri talep edin.
3. Eşzamansız İsteklerden Yararlanın
Eşzamansız istekler, uygulamanızın API yanıtını beklerken diğer görevleri işlemeye devam etmesini sağlar. Bu, algılanan bekleme sürelerini azaltarak kullanıcı deneyimini önemli ölçüde iyileştirebilir.
4. API Performansını İzleyin ve Günlüğe Kaydedin
API performansını düzenli olarak izlemek ve günlüğe kaydetmek, darboğazları ve iyileştirme alanlarını belirlemek için esastır. Apidog gibi araçlar, yanıt süreleri ve hata oranları gibi API performans ölçümlerini izlemenize yardımcı olarak, veriye dayalı kararlar vermenize olanak tanır.
5. Hız Sınırlaması Uygulayın
API'nizi çok fazla istek tarafından bunalmaktan korumak için, hız sınırlaması uygulamayı düşünün. Hız sınırlaması, bir istemcinin belirli bir zaman diliminde yapabileceği istek sayısını kısıtlayarak, adil kullanım sağlar ve kötüye kullanımı önler.
Sonuç
API'ler, farklı uygulamalar arasında kesintisiz iletişimi sağlayan modern yazılım geliştirmenin bel kemiğidir. Çeşitli API çağrı türlerini anlamak, verimli, ölçeklenebilir ve güvenli uygulamalar oluşturmak için çok önemlidir. İster GET istekleriyle veri alıyor, ister POST istekleriyle veri gönderiyor, ister API performansınızı optimize ediyor olun, her tür API çağrısını ne zaman ve nasıl kullanacağınızı bilmek esastır.
Ve unutmayın, API geliştirme sürecinizi basitleştirecek bir araç arıyorsanız, Apidog'u ücretsiz indirin. Apidog, API'lerle çalışmayı her zamankinden daha kolay hale getiren, API testi, yönetimi ve dokümantasyonu için kapsamlı bir araç paketi sunar.