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...

Archive for Ocak, 2015

Yeni mezun bilgisayar mühendisi arkadaşlar eğer java teknolojisinin yoğun olarak kullanıldığı bir yerde çalışırlarsa, karşılarına mutlaka “ji pi ey” diyen birileri çıkacaktır. Peki “Nedir bu JPA arkadaş ?” diye sormak yerine bu simple şeyin ne olduğunu öğrenmeye ne dersiniz ?

Persistence sözcüğü, ingilizce sözlüklerde 19-20.anlam olarak kalıcı iz bırakma anlamına geliyor. Bu anlamı itibari ile JPA in ne demek olduğunu ifade etmek gerekirse, database üzerinde bulunan componentlerin modellenmesi anlamına geliyor aslında. Yani database iniz var ve bu database i java da modellemek istiyorsunuz. İhtiyacınız olan şey, tablolarınızın object oriented modelini oluşturmak sadece.

 

JPA mantığının içerisindeki en önemli kavram “Entity” kavramıdır. Database de bulunan tablolarınızı bir JPA Provider aracılığıyla Entity lere çevirirsiniz. Bir iş görüşmesinde bunu süsleyerek anlatabilirsiniz tabi, ama işin özeti elinizde bir database var, sql stringleri ile uğraşmak, hata riskini arttırmak yerine, JPA Provider ile oluşturulmuş object oriented java class ları olan entity leri kullanarak işlemler yapıyorsunuz. Herşey bu kadar basit.

 



İsveçliler de bir garipler yahu. Adamların bir geleneği var, Flogsta Scream deniyor, akşam 22 de çıkıyorsun pencereye ve çığlık atıyorsun. Bir bakıma meditasyon bence, ne derdin ne tasan ne sinirin varsa hepsi bir anda kayboluverir. Bizim ülkede tencere tavacılara düşman olanlar var ya hani, bir de bu gelenek olsa acaba ne yaparlardı merak ediyorum 🙂

 


Merhaba arkadaşlar,

Uzun zamandır teknik bir yazı paylaşmamıştım, bu sene daha sık paylaşımda bulunmayı düşünüyorum. Günümüzün popüler konularından birisiyle 2015 yılının ilk yazısına başlıyorum. Konumuz REST Api nedir ?

Bu yazıyı REST sözcüğünü ilginç bulup okuyanlar için önce API nedir den başlayalım 🙂 Api, Application Programming Interface kelimelerinin baş harflerinden oluşan bir kısaltmadırapi Bir uygulamanın bir takım fonksiyonlarının başka uygulamalar tarafından kullanılmasına olanak sağladığı yapıya API diyoruz özetle.

Günümüzde iki sistemin haberleşmesinde kullanılan trend olmuş iki tip servis haberleşmesi var. Bir tanesi SOAP ve diğeri de REST. Ben çok kısa, SOAP dan da bahsedeceğim, REST ile arasındaki farkları anlamak açısından.

SOAP dediğimiz arkadaşımızın Simple Object Access Protocol – Basit Nesne Erişim Protokolü isminde uzunca bir ismi var. SOAP web servis çağrılarında Remote Procedure Call (RPC) modelini kullanan, istemci/sunucu mantığına dayalı bir protokoldür. Daha da özet hali, bir servis var ve bunun metodları var, siz de bu metodları call ederek response alıyorsunuz. SOAP da request / response süreci tümüyle XML olarak iletilmektedir.

Örnek SOAP servis;

axqSol tarafta iki örnek SOAP servis metodu görüyorsunuz. Bir tanesi getLastVersion, diğeri de getSozlesme metodu. Mantık ise oldukça basit, getLastVersion metodunu hiç bir input vermeyerek çağırdığınızda, uygulama size bir element dönüyor, bu element in tipi string ve unique bir değer.

SOAP servisleri denemek istiyorsanız, SOAP UI isimli toolu şiddetle öneririm. Oldukça kullanışlı olan bu tool ile servisimizi deneyecek olursak;

 

 

Request;

Response;

Şeklinde olmaktadır. Görüldüğü üzere bütün veriler XML olarak gidip gelmektedir. Bu da SOAP ın artık old-fashioned olması için geçerli bir sebep aslında.

Gördüğünüz gibi psikolojik olarak SOAP ın insanda verdiği hissiyat, bir sürü text ama anlaşılır bir yapı gibi. Eğer siz de öyle düşünüyorsanız, REST i korkmadan algılamaya çalışırsanız, ön yargılarınızı yıkarsanız, daha simple birşey olduğunu anlayacaksınız.

REST (Representational state transfer) Nedir ?

  1. REST client-server iletişimiyle ilgili bir mimari.
  2. SOAP, RPC gibi kompleks mimarilerle sağlamak yerine, HTTP protokolü üzerinden saglamak.
  3. SOAP, RPC’nin aksine basit ve hafiftirler.
  4. Esnek olup, SOAP gibi keskin standartları yoktur.
  5. SOAP ile en büyük farkı, SOAP gibi bizi proxy kullanmaya, bir WSDL’e zorlamıyor olması.
  6. Entegre etmesi kolay.

Yukarıdaki maddelerin üzerinden tek tek geçmekte fayda var. İlk maddemiz ve ikinci maddemizi ortak düşünelim. Ortada bir client, bir server var, bu client aslında sadece POST, GET, PUT, DELETE vb. gibi bir kaç kelimeyi biliyor ve HTTP üzerinden haberleşme yapılıyor. Ne kadar simple olduğunu gelin siz düşünün 🙂

Standartı yoktur REST’in. Yani kafanıza estiği gibi bir mapping mimarisi uydurabilirsiniz. (Tabi saçma olmaması lazım) Özetle method call gibi değil, adeta bir ağaç mantığıyla api call yapabiliyorsunuz.

PROXY yok, WSDL yok, XML ile uğraşmak yok. Request yap html üzerinden, al responsu JSON üzerinden, bu kadar basit 🙂

REST Request Tipleri:
  • GET : Belirtilen collection’ın URI’lerini veya detaylarını listelemede kullanılır.
  • PUT: Bütün bir collection’ı başka bir collection’la yer değiştirmek için kullanılır.
  • POST: Yeni bir collection oluşturmak için kullanılır ve yeni oluşturulan collection’ın URI’si döndürülür.
  • DELETE: Tüm Collection’ı silmek için kullanılır.
REST Apilerde Dönülen HTTP Status Kodları (Yaygın Kullanılanlar)

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. 
Read more