Yazılım geliştirme endüstrisinde entegrasyonlar uygulama tasarımında önemli bir rol oynamaktadır. Bunun için ana teknolojilerden biri REST API'dir . REST API bilgisi her teknoloji uzmanı için önemli bir beceridir. Bu yazımızda iş görüşmesine hazırlanmanıza ve becerilerinizi geliştirmenize yardımcı olacak 25 REST API sorusunu sunacağız. Okumanın tadını çıkar!
Her şeyden önce, görüşmeyi yapan kişi genellikle REST API'deki soruları teorik ve pratik olarak ikiye ayırır. Öncelikle terminoloji ve HTTP istek yöntemleri hakkında 2-3 teorik soru soruyorlar ve ardından bir istek hazırlama konusunda pratik bir görev alıyorsunuz.
Bu yazıda sık sorulan teorik sorular yer alıyor, bir sonraki yazımda REST API ile ilgili pratik görev örneklerini yayınlamayı planlıyorum. Bir röportajda hangi soruları alacağınızı önceden bilmiyoruz, ancak tipik sorular listemizi incelerken muhtemelen konunun daha derinlerine ineceğinize ve REST API'ye ilişkin bilginizi geliştireceğinize eminim. her durumda.
Şimdi basitten karmaşığa doğru ilerleyelim, temel terminolojiyle başlayıp daha karmaşık soruların olduğu bir bölümle devam edelim.
Cevap: REST'ten bahsederken sıklıkla aynı şey olduğu düşünülen üç terim kullanılır, ancak bu tamamen doğru değildir. Bu terimler REST, REST API ve RESTful API'dir. Şimdi REST hakkında bir cevap olacak, terim Temsili Durum Transferi anlamına gelir ve ön uç ve/veya harici sistemlerle entegrasyona sahip uygulamalar geliştirmek için HTTP protokolünü (Köprü Metni Aktarım Protokolü) temel alan bir mimari stildir. REST, tasarlanan API hizmetlerinin uyması gereken yönergeleri açıklar. Bu ilkeler, isteklerin istemci ve sunucu arasında HTTP kullanılarak iletilmesini sağlar.
Cevap: API, bireysel uygulamaların iletişim kurmasına ve veri alışverişinde bulunmasına olanak tanıyan bir programlama arayüzüdür. Örneğin, bir yemek dağıtım uygulaması, kuryenin konumunu izlemek ve onu bir haritada görüntülemek için Google Haritalar API'sini kullanabilir. REST API, REST ilkelerini izleyen, her biri benzersiz bir Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından temsil edilen tüm verileri kaynak olarak ele alan bir API'dir.
Cevap: RESTful API, REST'in kurallarına (veya "ilkeleri" de diyebilirsiniz) göre tasarlanmış bir API'dir. Başka bir deyişle REST API ile RESTful API arasındaki fark terminolojiktir. İlk durum bir dizi REST kuralına atıfta bulunurken ikincisi, REST kurallarına uygun olarak belirli bir API'nin uygulanmasına atıfta bulunur. RESTful API terimi genellikle kısaltma amacıyla REST API veya hatta REST ile değiştirilir. Sistem analistleri bir uygulama şeması üzerinde REST etiketli okları çizdiğinde, bu bir RESTful API anlamına gelir.
Cevap: REST API istekleri iki temel prensibe uymalıdır: İstemci ve sunucuya ayırma: İstemci ve sunucu arasındaki etkileşim, istekler ve yanıtlar şeklinde gerçekleştirilir. Yalnızca istemciler istekte bulunabilir ve yalnızca sunucular birbirlerinden bağımsız çalışacak şekilde yanıt gönderebilir. Tek protokol: İstemci ve sunucu arasındaki etkileşimin tek bir protokol kullanılarak gerçekleştirilmesi gerekir. REST için bu protokol HTTP'dir.
Cevap: En az 4 ilke daha sayabilirsiniz. REST API istekleri, durumu sunucuda saklamaz ve sunucu katmanlarından geçerek önbelleğe alınabilir. Çalıştırılabilir kodu istemcilere sunucu yanıtında da gönderebilirsiniz. Sunucu Durum Bilgisi Olmayan: Sunucu geçmiş istekler/yanıtlar hakkında hiçbir bilgi saklamaz. Her istek ve yanıt, etkileşimi tamamlamak için gereken tüm bilgileri içerir. Durum bilgisi olmayan iletişim sunucu yükünü azaltır, bellekten tasarruf sağlar ve performansı artırır. Katmanlı sistem: İstemci ile API sunucusu arasında farklı işlevleri gerçekleştirmek için katmanlar halinde ek sunucular bulunması mümkündür. REST prensipleri üzerine kurulu bir sistemde katmanlar modülerdir ve istemci ile sunucu arasındaki iletişimi etkilemeden eklenebilir ve çıkarılabilir. Önbelleğe Alınabilirlik: Sunucunun yanıtları, kaynağının önbelleğe alınabilir olup olmadığını gösterir, böylece istemciler performansı artırmak için herhangi bir kaynağı önbelleğe alabilir. İsteğe bağlı kod: Sunucu, istemci uygulaması içinde yürütülmek üzere yanıt olarak istemcilere yürütülebilir kod gönderebilir.
Cevap: REST'te sunucu tarafında erişilebilen her nesne bir kaynak olarak atanır. Kaynak, bir türü, kendisiyle ilişkili verileri, sunucudaki diğer kaynaklarla ilişkisi ve onunla çalışmak için kullanılabilecek yöntemlerin bir listesini içeren bir nesnedir. Örneğin bir kaynak, bir HTML veya metin dosyası, bir veri dosyası, bir görüntü veya video ya da çalıştırılabilir bir kod dosyası olabilir. Bir kaynak, Tekdüzen Kaynak Tanımlayıcısı veya URI ile tanımlanır. İstemciler, HTTP isteklerindeki URI'lerini kullanarak kaynaklara erişir.
Cevap: URI, Tekdüzen Kaynak Tanımlayıcı anlamına gelir. Bu, sunucudaki bir kaynağı tanımlayan bir dizedir. Her kaynağın kendine özgü bir URI'si vardır ve bu, bir HTTP isteğine dahil edildiğinde istemcilerin o kaynağa erişmesine ve bu kaynak üzerinde eylemler gerçekleştirmesine olanak tanır. Bir kaynağa URI'si ile atıfta bulunma işlemine "adresleme" adı verilir.
Cevap: CRUD, "Oluştur, Oku, Güncelle, Sil" anlamına gelir. Bunlar, REST API aracılığıyla veritabanlarında gerçekleştirilebilecek dört ana eylemdir. Her eylemin kendi HTTP istek yöntemi vardır:
Cevap: HTTP yanıt yükü, istemci tarafından talep edilen kaynak verilerini ifade eder. Buna kısaca "HTTP yanıt yükü" de denir. Bu veriler, sunucunun tam olarak ne sağladığına bağlı olarak JSON, XML, HTML, resimler, dosyalar vb. biçiminde olabilir.
Cevap: REST'te mesajlaşma, istemci ile sunucu arasındaki mesaj alışverişini ifade eder. İletişim her zaman istemcinin sunucuya bir HTTP isteği göndermesiyle başlar. Sunucu bu isteği işler ve ardından isteğin durumunu ve istemcinin talep ettiği kaynakları belirten bir HTTP yanıtını geri gönderir.
Yanıt: REST bağlamında "mesaj aracısı" terimi, dağıtılmış bir uygulamadaki çeşitli bileşenler veya sistemler arasında mesajların iletilmesine hizmet eden bir ara yazılımdır. Aracı, çeşitli sistem modülleri arasında eşzamansız veri alışverişi, mesaj sıralama ve mesaj işleme sağlayabilir.
Mesaj aracıları, eşzamansız işlemleri yönetmek veya bildirim göndermek için kullanılabilir. Mesaj aracısı yerel bir REST öğesi değildir çünkü... REST, HTTP isteklerini kullanan istemci ve sunucu arasındaki eşzamanlı iletişime odaklanır.
Cevap: HTTP istek yöntemi, sunucunun kaynak üzerinde gerçekleştirmesi istenen eylemi belirtir. REST'te istemciden sunucuya HTTP istekleri yapmak için dört ana yöntem vardır:
Cevap: POST, sunucuda bir kaynak oluşturmak içindir, PUT ise belirli bir URI'deki bir kaynağı başka bir kaynakla değiştirmek içindir. Zaten ilişkilendirilmiş bir kaynağa sahip bir URI'de PUT kullanırsanız, PUT onun yerini alacaktır. Belirtilen URI'de kaynak yoksa PUT bir tane oluşturur. PUT önemsizdir, yani onu birden çok kez çağırmak yalnızca tek bir kaynağın oluşturulmasıyla sonuçlanacaktır. Bunun nedeni, her çağrının mevcut bir kaynağı değiştirmesidir (veya değiştirilecek bir şey yoksa yeni bir kaynak oluşturmasıdır). POST önemsiz değildir. Örneğin, POST'u 10 kez çağırırsanız, sunucuda her biri kendi URI'sine sahip 10 farklı kaynak oluşturulacaktır. Nadiren kullanılsa da POST yanıtları önbelleğe alınabilir ancak PUT yanıtları önbelleğe alınamaz. POST istekleri genellikle önbelleğe alınamaz olarak kabul edilir, ancak verilerin "güncelliği" hakkında net bilgi içerdiklerinde önbelleğe alınabilirler. Daha ayrıntılı bir cevap, veriler "taze" ise ve İçerik Konumu (en-US) başlığı ayarlanmışsa POST (veya PATCH) isteğine verilen yanıtın önbelleğe alınabileceğidir, ancak bu nadiren uygulanır. Bu nedenle mümkünse POST önbelleğe alma işleminden kaçınılmalıdır.
Cevap: REST'te bir HTTP isteğinin aşağıdaki temel bileşenleri bulunmaktadır: Kaynağa yapılacak istek yöntemi (örn. GET, POST, PUT, DELETE). Sunucuda istenen kaynağı tanımlayan bir URI. HTTP sürümü – yani sunucu yanıtında hangi sürümün olması gerektiği. HTTP istek başlığı, kullanıcı aracısı, istemci tarafından kabul edilen dosya formatları, istek gövde formatı, dil, önbelleğe alma tercihleri vb. gibi istekle ilgili meta verileri içerir. Bir HTTP isteğinin gövdesi, istekle ilişkili tüm verileri içerir. . Bu yalnızca isteğin sunucudaki verileri POST veya PUT yöntemlerini kullanarak değiştirmek olması durumunda gereklidir.
Cevap: HTTP yanıtları sunucudan istemciye gönderilir. Müşteriye, talep edilen eylemin tamamlandığını (veya tamamlanmadığını) ve talep edilen kaynakların teslim edildiğini bildirirler. Bir HTTP yanıtının dört ana bileşeni vardır: Kullanılan HTTP sürümü. İstek durumunu ve HTTP yanıt durum kodunu içeren durum çubuğu. Zaman, sunucu adı, kullanıcı aracısı, döndürülen kaynak dosya formatları, önbelleğe alma bilgileri dahil olmak üzere yanıtla ilgili meta verileri içeren HTTP yanıt başlığı. İstemci tarafından talep edilen kaynakla ilgili verileri içeren HTTP yanıt gövdesi
Cevap: İstek başarılı bir şekilde işlendiğinde sunucu aşağıdaki işlem durum kodlarını döndürür:
Cevap: Sunucu, bir isteği yeniden yönlendirirken aşağıdaki durum kodlarını döndürür:
Cevap: İstek başarısız olduğunda sunucu aşağıdaki kodları döndürür:
Cevap: Sunucuda bir hata oluştuğunda sunucu aşağıdaki kodları döndürür:
500 Dahili Sunucu Hatası: Sunucuda beklenmedik bir sorun nedeniyle istek tamamlanamadı.
502 Hatalı Ağ Geçidi: Yukarı akış sunucusundan gelen yanlış yanıt nedeniyle istek tamamlanamadı.
503 Hizmet Kullanılamıyor: Sunucu, bakım, aşırı yükleme veya diğer geçici rahatsızlıklar nedeniyle isteği işleyemedi.
En yaygın HTTP kodlarının listesini burada bulabilirsiniz
Cevap: GraphQL, istemcilerin yalnızca ihtiyaç duydukları verileri sorgulamasına olanak tanıyan bir sorgulama dilidir. GraphQL'de istemci almak istediği verinin yapısını ve formatını tanımlar, sunucu da bu isteğe göre onu döndürür. Temel fark, REST'in her kaynak için sabit bir istek ve yanıt formatına sahip olmasıdır; GraphQL ise müşterilerin isteklerini tanımlamasına ve yalnızca ihtiyaç duydukları bilgileri almasına olanak tanıyarak kullanımını daha verimli ve esnek hale getirir.
Cevap: REST ve SOAP (Basit Nesne Erişim Protokolü), API oluşturmaya yönelik iki yaklaşımdır. Aralarında 3 temel fark var:
Cevap: Eşzamansız JavaScript veya AJAX, web uygulamalarında kullanılan bir dizi web geliştirme teknolojisidir. AJAX özünde bir web sayfasının sunucuya istekte bulunmasına ve sayfanın tamamını güncellemeye gerek kalmadan sayfanın arayüzünü güncellemesine olanak tanır.
Bir AJAX istemcisi isteklerinde REST API'yi kullanabilir ancak AJAX'ın yalnızca REST API ile çalışması gerekmez. REST API'ler, AJAX kullansın ya da kullanmasın herhangi bir istemciyle iletişim kurabilir.
Mesaj alışverişinde HTTP isteklerini ve yanıtlarını kullanan REST'ten farklı olarak AJAX, isteklerini JavaScript'te yerleşik XMLHttpRequest nesnesini kullanarak sunucuya gönderir. Sunucu yanıtları, içeriğini değiştirmek için sayfanın JavaScript kodu tarafından yürütülür.
Yanıt: REST API geliştirmede Sözleşme Öncesi yaklaşımı, API spesifikasyonunun ve sözleşmesinin gerçek geliştirme başlamadan önce oluşturulduğu ve tanımlandığı bir metodolojidir. Bu sözleşme, müşterilerin API ile nasıl etkileşime girebileceğini ve çeşitli isteklerden ne gibi beklenen sonuçların elde edileceğini tanımlayan önemli bir belge görevi görür.
Cevap: Önce Sözleşme yaklaşımının aşağıdaki avantajlarından bahsedilebilir:
Yanıt: REST API geliştirmeye yönelik Code First yaklaşımı, önce API işlevselliğinin geliştirildiği ve ardından bu işlevselliğe dayalı olarak bir API spesifikasyonunun otomatik olarak oluşturulduğu bir metodolojidir. Code First yaklaşımının ayırt edici özelliği, geliştiricilerin API mantığını yazmaya odaklanmaları ve bu mantığa dayalı olarak otomatik olarak dokümantasyon ve spesifikasyonlar oluşturmalarına olanak tanıyan araçları kullanmalarıdır.
Genel olarak, Code First ve Contract First olmak üzere her iki yaklaşım da aynı API geliştirme projesi içerisinde birleştirilebilir. Bu durumda, hızlı prototipleme için Code First kullanılır ve ardından sözleşmeyi resmileştirmek için Contract First kullanılır.
Bu makalenin bir iş görüşmesine hazırlanırken veya REST API hakkındaki bilgilerinizi tazelerken size yardımcı olacağını umuyorum.