Photo by Daniel Tafjord on Unsplash

API

Standart Olmayan API’ler Üzerine Geliştirilen Uygulamaların Kırılganlığı

Bazen Web/Mobil uygulamaları veya Chrome Extension ları geliştirirken standart API’ler yerine kendimiz Web Crawl ederek ve bu verileri parse ederek yolumuza devam ederiz. Bende Medium üzerinde bu şekilde geliştirdiğim bir örnekten yola çıkarak bu kırılganlığı anlatacağım.

Onur Dayıbaşı
Frontend Development With JS
3 min readDec 16, 2023

--

Medium üzerinde blog yazıları yazıyorum, ilgilendiğim kişilerin yazılarını okuyorum fakat bunları istediğim gibi gruplayamadığımı ve organize edemediğimi farkettim. Tabi o zamanlar Medium platformu bu kadar gelişmiş değil.

Bende Medium üzerinden yazarların Story bilgisini alan ve bunları istedikleri klasörlere sürükle bırakla atabilen ufak bir SaaS uygulama geliştirmeyi düşündüm.

Bunun üzerine bir arkadaş ile birlikte Yumod Projesini geliştirdik.

Tabi burada önemli konu. O zamanlar medium’ un URL uzantılarından yazarın tüm bilgilerini REST API üzerinden çekip bir şekilde JSON şeklinde Crawl edebiliyordum.

Hatta bunun ile birlikte bir Chrome Extension çıkarmıştım.

https://chromewebstore.google.com/detail/yumod/kpjkbgdonednmekjdoemegjnlflnfgkd?hl=tr

1nci Kırılma

Uygulama ve Extension çıkarmamın üzerinden bir süre geçtikten sonra, Medium bu URL üzerinden başka yazarlar için Stats ve Bilgi çekme yeteneğini kaldırdı. Sadece kendi kullanıcınız için bu bilgileri çekebilir hale geldiniz.

Zaten bu aşamadan sonra bu uygulama ve extension bir anlamı kalmamış ve çöp haline gelmişti.

Bu Altyapıdan Kendime Yeni Bir İstatistik Aracı Oluşturdum.

Medium hala benim ihtiyaçlarıma tam olarak bir cevap vermiyordu. Medium’da yazı yazmayı ve paylaşmayı seviyordum ama gruplama özelliğini sevmiyordum bundan dolayı onurdayibasi.com sitesinde yazılarımı gruplayıp daha derli toplu görebileceğim bir site oluşturdum. (Detaylı bilgi için burayı okuyabilirsiniz),

Zaman içerisinde Medium’daki istatiksel bilgileride bu siteden görebilmek istedim.

Bunun için Chrome Extension , medium.com/me#stats verilerini okuyabilecek hale getirdim. Medium sayfasına login olunca Chrome Extension’ da aynı yetkilere sahip olduğu için kendi istatistiksel bilgilerimi export edip bunları S3, Cloudfront üzerinden web sayfamda istatiksel olarak kullanabilmeye açtım.

2nci Kırılma

Zaman içerisinde ChromeExtension güvenlik ile ilgili problemleri olduğunu sonrasında Manifest versiyonlarında güncelleme yapacaklarını ve bu güncellemeleri yapmadığım taktirde Chrome Extension yeni versiyonlarını yayına alamayacağım gibisinden mesajlar aldım.

Zaten benimde ChromeExtension yayma gibi bir amacım yoktu sadece kendi projelerimde kullanacağım için Development Mode localden Extension Chrome atarak yoluma devam ettim.

3ncü Kırılma

Uzunca bir süre bu şekilde gittikten sonra dün istatiksel export almaya çalıştığımda artık ….me üzerinden sağladığım REST API ortadan kalkmış bunun yerine GraphQL üzerinden farklı formatta veri sorgulayabildiğimiz yeni bir yapıya geçmiş olduklarını farkettim.

Bunun için Chrome Extension 0'dan tekrardan yazdım. Localde kullanacağım için Styling falan dikkat etmedim tabi..

Sonuçta iş görüyor. Web sitemde istatiksel güncellemeleri tekrardan çalıştırabilir hale geldim.

Sonuç ve Çıkarımlar

Uygulamaların sürdürebilirliklerini devam ettirmek gerçekten çok zor. Çevremde o kadar çöp haline gelmiş proje var ki,

  • Uygulamada kullandığımız Kütüphane Versiyonlar Güncelleniyor
  • Sunucu Maliyetleri
  • Kullandığımız API veya API olmayan Veri Kaynakları Bozuluyor
  • Bakım Maliyetleri
  • vb…

Bir çok nedenden Web veya Mobil uygulamalarının devam etmeyip çöp olduğunu görebilirsiniz. Burada standart olmayan API’ler üzerinden gitmek bu işi daha da hızlandırıyor çünkü bağımlı olduğunuz servisin size bu şekilde devam edeceğinin bir garantisini veriyor olması lazım, aksi taktirde kırılgan bir dalın üzerinde yürüyorsunuzdur, çok geçmeden düşeceksiniz.

--

--