paint-brush
25 Temel REST API Röportaj Soruları ve Cevaplarıile@vshashkin
338 okumalar
338 okumalar

25 Temel REST API Röportaj Soruları ve Cevapları

ile Valentin Shashkin11m2024/06/19
Read on Terminal Reader

Çok uzun; Okumak

Bu makalede, teknoloji uzmanlarının iş görüşmelerine hazırlanmalarına ve becerilerini geliştirmelerine yardımcı olacak, hem teorik kavramları hem de pratik görevleri kapsayan 25 önemli REST API sorusu sunulmaktadır.
featured image - 25 Temel REST API Röportaj Soruları ve Cevapları
Valentin Shashkin HackerNoon profile picture
0-item


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.


1. REST nedir?

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.


2. REST API nedir?

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.


3. RESTful API nedir?

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.


4. REST'in iki temel ilkesi nedir?

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.


5. REST'in başka hangi ilkelerini biliyorsunuz?

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.


6. Kaynak nedir?

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.


7. URL nedir?

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.


8. CRUD nedir?

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:

  • Oluştur = POST
  • Oku = AL
  • Güncelleme = PUT
  • Sil = SİL


9. Sunucu yanıtındaki yük ile ne kastedilmektedir?

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.


10. REST mesajlaşma nedir?

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.


11. REST'teki mesaj aracısı nedir?

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.


12. REST tarafından hangi HTTP istek yöntemleri desteklenmektedir?

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:


  • GET: Sunucudan kaynak ister, bu yöntem salt okunurdur.
  • POST: Sunucuda yeni bir kaynak oluşturur.
  • PUT: Sunucudaki mevcut bir kaynağı günceller.
  • DELETE: Sunucudan bir kaynağı siler.


13. POST ve PUT yöntemleri arasındaki fark nedir?

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.


14. Bir HTTP isteğinin ana bölümleri nelerdir?

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.


15. HTTP yanıtının ana bölümleri nelerdir?

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


16. Başarılı HTTP sunucusu yanıtları için en az 3 kodu adlandırın

Cevap: İstek başarılı bir şekilde işlendiğinde sunucu aşağıdaki işlem durum kodlarını döndürür:

  • 200 Tamam: İstek başarıyla tamamlandı.
  • 201 Oluşturuldu: İstek başarılı oldu ve kaynak oluşturuldu.
  • 202 Kabul Edildi: Bu durum, sunucunun istemcinin isteğini kabul ettiği ancak işlemeyi tamamlamadığı anlamına gelir. İşleme eşzamansız olabilir.


17. Bir isteği yönlendirirken en az 4 sunucu HTTP yanıt kodunu adlandırın

Cevap: Sunucu, bir isteği yeniden yönlendirirken aşağıdaki durum kodlarını döndürür:

  • 301 Kalıcı Olarak Taşındı: Bu durum, istemciye istenen kaynağın kalıcı olarak başka bir URL'ye taşındığını ve istemcinin kaynağa erişmek için yeni URL'ye erişmesi gerektiğini bildirir.
  • 302 Bulundu: Bu durum, kaynağın geçici olarak başka bir URL'ye taşındığını ve istemcinin geçici olarak yeni URL'yi kullanması gerektiğini belirtir.
  • 307 Geçici Yönlendirme: 302'ye benzer, ancak istemcinin yeni URL'ye erişirken aynı istek yöntemini kullanması gerekir.
  • 308 Kalıcı Yönlendirme: 301'e benzer, ancak istemcinin yeni URL'ye erişirken aynı istek yöntemini kullanması gerekir


18. Başarısız HTTP sunucusu yanıtlarına ilişkin en az 4 kodu adlandırın.

Cevap: İstek başarısız olduğunda sunucu aşağıdaki kodları döndürür:

  • 400 Hatalı İstek: İstekteki yazım hatası veya eksik veri gibi bir hata nedeniyle istek tamamlanamadı.
  • 401 Yetkisiz: İstemcinin kimliği doğrulanmadığından veya istenen kaynağa erişim iznine sahip olmadığından istek tamamlanmadı.
  • 403 Yasak: İstemcinin kimliği doğrulandığı ancak istenen kaynağa erişim yetkisi olmadığı için istek tamamlanmadı.
  • 404 Bulunamadı: Sunucu istenen kaynağı bulamadığı için istek tamamlanamadı.


19. En az 3 sunucu hata kodunu adlandırın.

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




20. REST ve GraphQL arasındaki fark nedir

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.


21. REST ve SABUN arasındaki fark nedir?

Cevap: REST ve SOAP (Basit Nesne Erişim Protokolü), API oluşturmaya yönelik iki yaklaşımdır. Aralarında 3 temel fark var:

  • SOAP, güvenli API'ler oluşturmaya yönelik katı bir protokoldür. REST bir protokol değil, REST ilkeleri adı verilen bir dizi yönergenin belirlediği mimari bir stildir. - REST API'lerin oluşturulması daha basittir, daha hafiftir ve genellikle SOAP API'lerinden daha hızlıdır.
  • SOAP API'leri REST API'lerinden daha güvenli kabul edilir, ancak REST API'leri yine de onları oldukça güvenli hale getirecek güvenlik özellikleri uygulayabilir. - REST yanıtların önbelleğe alınmasına izin verirken SOAP bunu yapmaz.
  • SOAP, verileri XML formatında kodlar. - REST, verileri herhangi bir formatta kodlamanıza olanak tanır, ancak XML ve JSON en popüler olanlardır.


22. REST ve AJAX arasındaki fark nedir?

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.


23. REST API geliştirmede "Önce Sözleşme" yaklaşımı nedir?

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.


24. Önce Sözleşme'nin faydaları nelerdir?

Cevap: Önce Sözleşme yaklaşımının aşağıdaki avantajlarından bahsedilebilir:

  • Açık API Tanımı: API spesifikasyonu ve sözleşmesi, API'nin müşterilerle nasıl etkileşimde bulunması gerektiğini tanımlar.
  • Riskleri Azaltın: Müşterilerle ön sözleşme onayı, yanlış anlama riskinin ve API geliştirme beklentilerinin karşılanamaması riskinin azaltılmasına yardımcı olur.
  • Geliştirilmiş dokümantasyon: Sözleşme metni genellikle API için dokümantasyon görevi görerek kullanımını ve entegrasyonunu kolaylaştırır.


25. REST API geliştirmede Code First yaklaşımı nedir?

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.