API’lerde hata ayıklama ve sorun giderme, API’lerle çalışan herhangi bir geliştiricinin bir noktada geçmesi gereken bir şeydir. İdeal bir dünyada, API’ler her zaman tam olarak ihtiyacımız olan doğru verilerle 200 OK döndürür veya bir arıza durumunda, bize neyin yanlış gittiğini kolayca anlamamıza olanak tanıyan mükemmel durum kodunu ve hata mesajını verir.
[toc]
Gerçekte, API’ler her zaman böyle çalışmaz. API geliştiricilerinin, en bilgilendirici durum kodunu veya hata mesajını uygulamalarına izin vermeyen kısıtlamaları olabilir, API hataları, hesaba katılması veya test edilmesi zor olan gerçek dünya koşulları tarafından tetiklenebilir ve bazen API kullanıcıları olarak kendimiz yapabiliriz. API’lerin nasıl işleneceğini bilmediği yazım hataları veya hataları olan istekler.
Bu yazıda, API kullanıcılarına ve bu API’ler ister genel ister özel olsun, API’leri test ederken ve onlarla çalışırken karşılaşabilecekleri yaygın API hatalarını ve hataları ayıklamak için neler yapabileceklerine odaklanacağız.
HTTP Durum Kodları:
API’lerle çalışırken, sunucuya gönderilen her HTTP isteği bir HTTP durum koduyla yanıtlanacaktır. HTTP durum kodları, ilk rakamlarına bakılarak beş farklı kategoriye ayrılabilir:
- 1xx – Bilgilendirici
- 2xx – Başarılı
- 3xx – Yönlendirme
- 4xx – İstemci Hatası
- 5xx – Sunucu Hatası
API’lerle çalışırken görebileceğimiz ve genellikle API kullanıcısının kendisi tarafından çözülebilen daha yaygın hatalar olduklarından, bu gönderideki 4xx istemci hata kodlarına odaklanacağız. Sonunda 5xx hata kategorisinden de biraz bahsedeceğiz.
400 Bad Request (400 Hatalı İstek) :
400 durum kodu, sunucunun geçersiz sözdizimi nedeniyle bir API isteğini işleyemediği anlamına gelir. Bunun neden olabileceği birkaç olasılık şunlardır:
API uç noktasını, bir başlık adını veya değerini veya bir sorgu parametresini yanlış yazmak gibi, isteği manuel olarak oluştururken yapılan bir yazım hatası veya hata. Bu, istekte gerekli bir sorgu parametresi eksikse veya sorgu parametresi değeri geçersiz veya eksikse de ortaya çıkabilir.
Hatalı biçimlendirilmiş bir JSON gövdesi, örneğin, çift tırnak işareti veya virgül eksik. JSON gövdesi ile bir API talebinde bulunmanız gerekiyorsa, ister bir web editörü ister kod editörü eklentisi kullanın, bunu bir linter kullanarak yazmanızı şiddetle tavsiye ederim.
İstekte kimlik doğrulama bilgileri eksik veya sağlanan Yetkilendirme başlığı doğrulanamadı
400 Kötü İstek hatasını ayıklarken ana tavsiye, her metin parçasını incelemektir. Uç nokta, başlıklar (ad ve değerler) ve gövdede yazım hatası olmadığından emin olun. API isteğinizin herhangi bir bölümünü kopyalayıp yapıştırdıysanız, soruna neden olabilecek herhangi bir hata veya rastgele karakter içermemesine özellikle dikkat edin.
Yukarıdaki son madde işaretimiz (eksik kimlik doğrulama bilgileri), birden çok API ile çalışırken görebileceğiniz şeylere iyi bir örnektir. Bir API, geçersiz kimlik doğrulama bilgilerine sahip bir istek için size 400 durum kodu gönderebilirken, diğeri size 401 yetkisiz durum kodu gönderebilir ve bu kod özellikle bu amaç için kullanılabilir.
400 hatalı istek durum kodu bazen birden çok hata türü için tümünü yakalama olarak kullanılır. Dolayısıyla, API isteğinizi geçersiz sözdizimi açısından kontrol ettiyseniz ve herhangi bir hata bulamadıysanız, diğer 4xx durum kodu çözümlerinden herhangi birinin hata ayıklamada size yardımcı olup olamayacağını görmeye çalışın.
401 Unauthorized (401 Yetkisiz) :
401 Yetkisiz durum kodu, API isteğinde kimlik doğrulama bilgileri eksik olduğunda veya sağlanan kimlik bilgileri geçersiz olduğunda döndürülür.
API’ler kararsız olabilir ve bu özellikle Yetkilendirme üstbilgisini oluştururken ve biçimlendirirken geçerlidir.
HTTP Temel kimlik doğrulamasını kullanırken, başlık değerinin sözdizimine çok dikkat etmek de önemlidir. Kendinizi bu tarz durumlardan kurtarmanın bir diğer yolu ise VPN’dir bu nedenle, En iyi Türk VPN’lerinin listelendiği makaleye ulaşmak için tıklayın!
Dikkat etmeniz gereken başka bir husus, yalnızca bir kullanıcı adınızın veya yalnızca şifrenizin olduğu durumlarda, kodlamadan önce iki nokta üst üste (“:”) eklemeyi unutmayın. Aksi takdirde, kimlik doğrulama başarısız olur.
403 Forbidden (403 Yasak) :
403 Yasak durum kodu, 401 koduna benzer, ancak birbirleriyle karıştırılmamalıdır.
Genellikle, 403 durum kodunu gördüğünüzde, yapılan API isteği bir tür yetkilendirme içerir. Ancak, 401 durum kodundan farklı olarak, sunucu yetkilendirme kimlik bilgilerini tanır ve kabul ettiği gibi kabul eder. Bu seferki sorun, kimliği doğrulanmış kullanıcının bu uç nokta için kaynağa erişememesidir.
Örneğin, kullanıcı, yalnızca hesap yöneticisi tarafından görüntülenebilen hesap düzeyindeki bilgilere erişmeye çalışıyor olabilir ve API isteğinde aktarılan kimlik bilgileri normal bir kullanıcı hesabı içindir.
Bu durum kodunun döndürülmesinin başka bir nedeni, kullanıcının doğru izinlere sahip bir API erişim belirteci istememesidir.
Bu iki durum için API çağrısını düzeltmek için, kullandığınız kimlik bilgilerinin uç nokta için gereken erişim düzeyine sahip olduğundan veya erişim belirtecinin doğru izinlere sahip olduğundan emin olun.
Bu hatayı görmemizin daha az yaygın bir nedeni, Accept üstbilgi değeri konusunda açık değilsek. Bazı API’ler, isteklere bu başlıkları eklemenizi gerektirir. Bu şekilde, sunucu, istemcinin hangi bilgileri gönderdiğini ve karşılığında hangi formatta almayı beklediğini bilir.
404 Not Found (404 Bulunamadı) :
404 Görmek için API’lerle çalışmamıza gerek olmayan durum kodlarından biri bulunamadı. Ancak, özellikle API’ler için, genellikle birkaç farklı anlama gelebilir:
- Uç nokta mevcut değil
- Uç nokta var, ancak kaynak bulunamıyor
- Uç nokta var ve kaynak bulunabilir, ancak kullanıcı ona erişmek için gerekli izinlere sahip değil ve bu nedenle sunucu bir 404 durum kodu döndürüyor
İlk iki durum için, bir API kullanıcısı olarak, belgelerde uç noktanın gerçekten var olup olmadığını iki kez kontrol etmek veya yazım hatası veya yazım hatası olmadığını iki kez kontrol etmek dışında yapabileceğimiz pek bir şey yoktur.
Üçüncü durum için tavsiye, önceki durum kodu olan 403’te anlattığımıza benzer. Bazı API’ler 403 yerine 404 hatası döndürebileceğinden, kullandığınız yetkilendirme kimlik bilgilerinin o uç noktaya gerçekten erişebildiğinden emin olun.
5xx Error Codes (5xx Hata Kodları) :
5xx durum kodları genellikle sunucunun bir hatayla karşılaştığı ve yapılan API isteğini çözemediği anlamına gelir. Karşılaşabileceğiniz daha yaygın durum kodlarından bazıları şunlardır:
- 500 Dahili Sunucu Hatası
- 502 sunucu hatası
- 503 Hizmet Kullanılamıyor
- 504 Geçidi Zaman Aşımı
Bir 5xx durumu, genellikle hatanın, olayların kullanıcı tarafında değil, sunucu tarafında olduğu anlamına gelir. Yani genel tavsiye şudur:
Daha sonra tekrar deneyin. Sunucu şu anda çok fazla yük altında olabilir
Bakım yapılıp yapılmadığına veya API çalışmadığına dair daha fazla bilgi için varsa API durum sayfasını kontrol edin..