obenplus.com | oben+ | Hikayesi bol bir yazılımcının kaleminden, teknoloji dünyasını en önemli ve en ince ayrıntısına kadar takip etmek, bir yazılımcının hayatını, yaşantısını gözlemlemek isteneyenler için...

All posts in Teknoloji

Merhaba arkadaşlar,

GOSOFT olarak yayımladığımız yeni uygulamamız, Ekşi Sözlük gayrıresmi mobil uygulaması Şükela Reader yayında.

Uygulamaya buradan ulaşabilirsiniz.

 Şükela Reader- ekran görüntüsü         Şükela Reader- ekran görüntüsü


QWDQWDQD

 

Bugün benim için oldukça önemli bir gün. Çünkü basılı ve online olarak yayımlanan Türkiye Bilgisayar Mühendisleri Odası’nın dergisinde REST yazım yayımlandı. Dergiye buradan, yazıma buradan ulaşabilirsiniz.


RabbitMQ Nedir ?

Pivotal tarafından geliştirilen RabbitMQ ‘nun ne olduğu aslında web sitesinde son derece net özetlenmiş;

Buradan da anlaşılabileceği üzere RabbitMQ, bir <message broker> yazılımıdır. Temelde yaptığı iş bir uygulamadan mesaj alıp, başka bir uygulamaya iletmektir.

RabbitMQ nun ne demek olduğunu günlük hayattan bir örnek ile açıklamak gerekirse, kargo süreci buna en güzel ve en anlaşılır örnek olarak görülebilir.

Yani siz(producer) kargonuzu kargo şirketine (rabbitmq queue) teslim ediyorsunuz ve şirket sizin kargonuzu göndermek istediğiniz kişiye(consumer) paketi iletiyor.

Producer, Queue ve Consumer

Yukarıdaki cümlede aslında rabbitmq nun üç önemli bileşeninden bahsetmiş olduk. Bunlar, producer, queue ve consumer.

Producer : RabbitMQ sistemine mesaj üreten modül. Yani kargoyu göndermek isteyen kişi.

Queue : Kuyruk anlamına gelir ve RabbitMQ üzerinde depolanan mesajları ifade eder. Bu mesajlar üreticiler(producer) tarafından RabbitMQ’ya gönderilmektedir ve consumer’lara iletilecektir. Birden fazla producer tarafından aynı queueya mesaj gönderilmesi de mümkündür.

Consumer : Kuyruğa gönderilen mesajları alan modüllerdir. Yani kargo örneğimizdeki kargonun gönderildiği kişi.

Yapının visualized hali ise aşağıda;

RabbitMQ Kurulumu

RabbitMQ kurulumu yapmak için bu linkteki download seçeneklerinden kendinize uygun olanı ile RabbitMQ Server’i indirmeniz gerekmekte.

Benim işletim sistemim Mac OSX olduğundan, mac için olan RabbitMQ’yu indirdim. Mac için server’ın nasıl kurulabileceği adım adım bu linkte gösterilmiş. Siz de linux ya da windows kullanıyorsanız ilgili yönlendirmeleri kullanarak kolayca kurulum yapabilirsiniz.

sbin

Serveri başlatmak için öncelikle kurulum yaptığınız klasörün içerisindeki sbin pathine giriyoruz. Read more


CNN Türk Ekonomi Direktörü, Emin Çapa’nın bu sunumunu izlediğimde, 20 dakikada bir root cause analiz bu kadar güzel yapılabilir diye düşündüm. Herkes mutlaka izlemeli.

 


Rest (Representational State Transfer) , “Temsili Durum Transferi” sözcüğünün kısaltılmışıdır ve ağırlıklı olarak web servis tasarım mimarisi olarak kullanılır.

Günümüzde en çok kullanılan servis haberleşme tipleri REST ve SOAP olarak ifade edilebilir. REST kendisine göre daha ağır siklet olan SOAP a göre tercih edilen bir tasarım mimarisidir çünkü daha az bant genişliği tüketimi sayesinde internet üzerinden kullanım için avantaj sağlamaktadır. SOAP servis çağrılarında Remote Procedure Call (RPC) modelini kullanan istemci/sunucu mantığına dayalı bir protokoldür. Daha basitleştirilmiş haliyle, SOAP ile bir web servis yarattığınız zaman o servisin bir XML dökümanı olur ve siz bu XML dökümanındaki tanımları kullanarak methodları çağırırsınız. Server ile Client arasındaki alışveriş SOAP kullanırken hep XML ler üzerinden olmaktadır. Bu nedenle de yüksek bant genişliği kullanımı mevcuttur. Özetle REST ile SOAP arasındaki en büyük fark SOAP ın XML alışverişine dayalı bir standart üzerinden işlem yapması buna karşın REST’in böyle bir standardının bulunmamasıdır. REST, XML ya da JSON formatında mesaj yollar ve geri alır. Sunucuya mesajlar HTTP requestleri olarak iletilir. Google, Amazon, Twitter ve Microsoft gibi bulut bazlı API’ler sunan firmalar, basit ve lightweight yapısı nedeniyle REST mimarisini kullanmayı tercih ederler. Bir web servis REST mimarisini kullandığı zaman RESTful API olarak adlandırılırlar.

rest

Madde madde olarak ifade edecek olursak;

  1. REST, Client – Server iletişimi ile ilgili bir mimaridir.
  2. İletişimini SOAP, RPC gibi kompleks mimariler yerine, HTTP protokolü üzerinden sağlar.
  3. RPC, WSDL in aksine basit ve hafiftir.
  4. SOAP gibi keskin bir standardı yoktur, esnek yapısı vardır. Requestler custom bir şekilde maplenebilmektedir.
  5. WSDL (Web Services Description Language) kullanımı yoktur.
  6. Entegre etmesi SOAP’a göre daha kolaydır.

Bu aşamadan sonra biraz daha derinlemesine inceleyecek olursak öncelikle REST’de kullanılan Request Tipleri’ne değinmemiz faydalı olacaktır.

Rest Request Tipleri;

  • GET : Belirtilen collection ya da collectionların kimliğini ya da detaylarını listelemede kullanılır.
  • PUT : Bütün bir collection’ı başka bir collection ile yer değiştirmede kullanılır.
  • POST: Yeni bir collection oluşturmak ve oluşan collectionun kimliğini dönmek için kullanılır.
  • DELETE: Collection silmek için kullanılır.
  • PATCH: Collectionun bir kısmını güncellemek için

Örneğin, http://api.bimo.org.tr/api/v1 adresli bir REST Api’miz olsun. Bu API nin amacının bir mesajlaşma sistemini yönetmek olduğunu düşünelim.

Aşağıdaki örnekler ve amaçlarını inceleyecek olursak, REST Api aklımızda çok daha iyi canlanacaktır.

GET /messages Mesaj Listesini Çek
GET /messages/192 192 kimlikli li mesaj detayını çek
POST /messages Yeni mesaj ekleme
PUT /messages/192 192 kimlikli mesajı güncelle
PATCH /messages/192 192 kimlikli mesajın bir kısmını güncelleme
DELETE /messages/192 192 kimlikli mesajın bir kısmını güncelleme

Bu örnekleri çoğaltmamız da mümkündür. Çünkü REST’de request mapping tamamen bizim kendi tasarımımıza kalmıştır. Örneğin GET /messages/192/userinfo requesti bizim tasarımımızda 192 kimlikli mesajı yaratan userın bilgileri anlamına gelebilir.

Örneğin Twitter REST Api’sinde kullanıcının timeline ında bulunan son 10 mesajı çekmek için https://api.twitter.com/1.1/statuses/user_timeline.json?count=10 şeklinde bir GET request’i gönderebilirsiniz.

Buna karşılık olarak da Twitter API’si JSON contentli bir response dönmektedir.

Son olarak da, REST API’lerin hata yönetimlerinin nasıl olabileceği üzerine inceleme yapacak olursak, REST API’ler HTTP request response ları ile iletişim kurmamızı sağladıkları için klasik HTTP response kodları ile durum hakkında bilgi sahibi olabiliriz.

En sık karşılaşılan HTTP kodları aşağıdaki gibidir;
  • 200 OK: Genelde veri listeleme sonuçları 200 ile dönüş yapılır.
  • 201 CREATED: Veri eklendiği zaman verinin kendisi ile 201 dönülüyor.
  • 204 NO CONTENT: Veri silindiği zaman 204 dönülüyor.
  • 400 BAD REQUEST: Genel olarak kayıt ekleme ya da güncelleme isteklerinde gönderilen veri validasyondan geçemediyse neden geçemediği hakkında bilgiyle beraber 400 http statusuyla dönülür.
  • 403 Forbidden: Yetkiye dayalı bir işlem yapılıyorsa bu api uç noktasında işlem yapmaya çalışan kişinin bu işlemi yapmaya yetkisi yoksa 403 status kodu döndürülür.
  • 401 Unauthorized: Api ucunuzda bu işlemi yapmak için login olmak zorunlu ise ve apiye istek yapan kullanıcı login değil ise bu http status ile cevap verilir. Örneğin kullanıcının kendi bilgilerinin güncellemesi denilebilir.
  • 404 Not Found: Bu http status  kullanıcının istek yaptığı url yok ise ya da url deki veri geçersiz ise bu hatayı alırız. örneğin şöyle bir url miz olsun /api/v1/account/bahattincinic sondaki bölüm kullanıcı adı. Buraya sistemimizde olmayan bir kullanıcı girersek 404 alırız.
  • 405 Method Not Allowed: Bu http status u istek yapılan api uç noktası gönderilen methodu implemente etmemiş ise bu http status unu alırız. Örneğin login olması için token verdiğimiz bir api ucumuz var ve bu uçta sadece post isteğini kabul ediyor. Kullanıcı bu api urline GET isteği yaparsa bu hatayı alır.
  • 429 Too Many Requests: Bu http statusunu saatlik ya da dakikaklık kısıtlanan sınırdan fazla istek yaparsak bu http statusunu alırız. 

HTTP statuslarını gruplayacak olursak;

  • Bilgilendirme – 1xx
  • Başarılı İşlem – 2xx
  • Yönlendirmek – 3xx
  • Kullanıcı Taraflı hata – 4xx
  • Server Taraflı hata – 5xx

Bu yazıyla sizlere, REST API’nin temel mimari yapısını, SOAP ile arasındaki farklarını, güncel kullanım alanlarını, kolay kullanımını ve request mapping’in nasıl olabileceğini anlatmaya çalıştım. Yazıyı noktalamadan önce belirtmek gerekir ki, REST günümüzde henüz kurumsal ve kompleks sistemler için mükemmel bir çözüm olarak görülmemekle birlikte, kullanım alanı zamanla hızlı bir şekilde artmaktadır. Özellikle mobil uygulamalar ve daha butik uygulamalar, yeni çıkan API’ler REST mimarisini tercih etmektedirler.

REST hakkında yukarıda anlattığımız içeriği eğlenceli bir şekilde bir video ile izlemek isterseniz, aşağıdaki videoyu öneriyorum 🙂