Spring HTTP Client : RestTemplate vs WebClient

Merhabalar, uzun bir aradan sonra bloğumun tozunu almaya geldim 🙂 Bu yazıda RestTemplate ve Webclient’tan bahsedeceğim.

RestTemplate,  client tarafında senkronize HTTP isteklerini yürütmek için kullanılan spring-boot-starter-web paketinde yer alan sınıftır.       Spring ayrıca spring-boot-starter-webflux paketinde WebClient adlı bir sınıfa sahiptir.  Bunlar, ” bir API’ye nasıl client olunur ? ” ‘un yöntemlerindendir.

Yani external bir API üzerindeki HTTP methodlarını nasıl çağıracağımızı veya bunlardaki geri dönüş değerlerini nasıl alıp işleyeceğimize yardımcı olurlar. Biz bu yazı da ikisini de ayrı ayrı projelerde örnekleyeceğiz.  Hangisi ile yolunuza devam edersiniz sizin kararınız . Bu karar üzerinde önemli etkiye sahip olacağını düşündüğüm bir bilgilendirme yapacak olursam  şöyle ki, springin dökümantasyonunda olan bir notu paylaşmak istiyorum ,

Okumaya devam et Spring HTTP Client : RestTemplate vs WebClient

Spring boot ile RabbitMQ

Merhabalar, yeni bir içerikle bu yazıda sizlerle buluşmaya geldim, en azından benim için yeni olduğunu söyleyebilirim 🙂  RabbitMQ’yu 1 ay önce ilk defa sohbet arasında bir arkadaşımdan duymuştum ilgimi çekti araştırayım nedir ne değildir diye bir anda kendimi bir senaryo üzerinde, rabbitmq ile çalışırken buldum daha sonra dedim ki : ” benim gibi bu alanda yeni olup, hem kendini geliştirmek isteyen hemde sırt çantasına yeni birşey eklemek isteyenlere belki faydam olur öğrendiklerimi paylaşayım . ”  bu amaç doğrultusunda rabbitmq kullanarak bir spring boot uygulaması yazacağız birlikte.

Senaryomuz şu şekilde bir kuyruğumuz var ve bu kuyruğa her 5 sn’de bir çağrı mesajı göndereceğiz ve kuyruğu dinleyip kuyruğa gelen çağrıları konsolda görüntüleyeceğiz .

Bu yazı sonucunda kazancımız, rabbitmq hakkında basic level ‘da bilgi ve bir projeyle tecrübe sahibi olmak ; kuyruğa nasıl message göndereceğimizi producer(üretici) ve bu kuyruğu dinleyerek gelen messageları nasıl consumer(tüketmek) edip process edeceğimizi, öğreneceğiz ve rabbitmq lifecycle’nı anlamış olacağız.

Projeye başlamadan önce bazı kavramları bilmek ve anlamak gerekiyor. Biraz kavramlardan ve çalıştığımız teknoloji nedir ne değildir bahsedelim.

Okumaya devam et Spring boot ile RabbitMQ

Solution of the java.lang.IllegalState Exception: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

Merhaba arkadaşlar , retrofit’ te baş belası haline gelen  “java.lang.IllegalState Exception: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $”  hatanın çözümünü paylaşacağım, 2019 yılında almıştım bu hatayı github’da bir issue açmıştım https://github.com/google/gson/issues/1462      bu hatayla ilgili bu nedenle  birçok mail alıyorum “nasıl çözerim” şeklinde bende bir yazı paylaşmanın zamanı geldiğini düşündüm.

Hatayı ilk aldığımda 2 gün çözmeye çalışmıştım, kendim hatanın nedenini farkedemeyince hatanın nedenini sormadığım forum kalmamıştı 🙂 .

Github’da google/json ‘da bir issue açtım çok geç olmadan hepimizin genelde bildiği Jake abimizden yorum geldi ;

Your JSON does not match the model you asked Gson to bind. This is fairly common and is a usage question which has been written about a lot on blogs, mailing lists, and StackOverflow. I would suggest you consult StackOverflow questions of similar nature.

Bu şekilde bir cevap almıştım ve “Your JSON does not match the model you asked Gson to bind.”  bu cümle çözümün ta kendisiydi.

Hemen request  attığım sayfadan gelen response json yapısına baktım ve android proje tarafında oluşturduğum modele baktım nasıl olması gerektiği hakkında bir fikrim yoktu . Hemen farklı Json yapılarını yapılarını araştırıp bunların nasıl modellendiğine baktım . sonrasında kendi Json yapıma uygun modeli oluşturdum. Bu sırada daha önceden öğrendiğim ama bir kez kullandığımdan olsa gerek unuttuğum  http://www.jsonschema2pojo.org/ bu sayfaya, response olarak gelen json çıktınızı verin . Bu sayfa size json yapınıza uygun,  java’da ‘ Pojo class ‘ olarak adlandırdığımız model class larınızı oluşturacaktır. Bu da sizin daha sağlıklı bir şekilde ilerlemenizi sağlayacaktır.

Şimdi sıra geldi bu model ile verileri nasıl işleyeceğinize …

Retrofit kütüphanesini kullandığınız sınıfta Call fonksiyonunuzda kulanacağınız ArrayList’e parametre olarak json modelinizin en tepesindeki root kökteki isimde oluşturulan model sınıfınızı parametre olarak verin .

Vee takın gözlükleri, Problem is solved !  😀

Konuyla ilgili sorunuz olursa yorum kısmına yazabilirsiniz..

 

RESTful Web Service – Jersey

Merhabalar, bu yazı RESTful (JAX-RS) web servisleri üzerine bir örnek olacaktır. İçerikten bahsetmek gerekirse projeyi oluşturma, veritabanını tasarlama, DAO katmanının yazılması, Rest Servislerin yazılmasını ve hatta hazırladığınız Rest Servise ait istemcinin nasıl yazılacağına kadar bir çok konuyu kapsayacaktır.

İÇİNDEKİLER

  • Projenin Oluşturulması
  • Veritabanının Oluşturulması
  • Veritabanı modellerinin oluşturulması
  • DAO Sınıfının Yazılması
  • Web Servislerinin Yazılması
  • Web Servis için İstemcinin yazılması

Okumaya devam et RESTful Web Service – Jersey

Hacettepe Teknokentte Staj Yapmak 2018

Merhaba anlatmaya,sizlerle paylaşmaya, biraz geç kalmış olmsam da bu yazımda 2. staj deneyimimi anlatacağım. Evet bu yaz da Hacettepe Teknokentte stajımı yaptım. Haziran ayından Ağustos ayına kadar dolu dolu geçen bir yaz stajı… Şuan o kadar heyecanlıyım ki yaşadığım deneyimleri anlatmaya.. ne kadar sizlere geç anlatıyor olsam da şuan da bu cümleleri yazarken heyecan doluyum… Büyük bir yazılım geliştirme birimi ve  büyük bir ekip.. staj sürecim boyunca beni en çok heyecanlandıran etkenlerden birkaçıydı. Düşünsenize her gün böylesine ciddi bir ortamda çalışacaksınız ve buranın, stajyer olarak misafirde olsanız, bir süreliğine parçasısınız. Bu arada stajyer dedim ama tüm samimiyetimle söylüyorum sanki orada bir stajyer değilim de gerek verilen sorumluluklar olsun gerek çalışanların davranışları olsun kendimi bir Mühendis gibi hissettim.Hergün şirkete büyük bir heyacan ve hevesle gidiyordum. Meslek hayatına başlamanıza ramak kala şimdiden bu tarz duyguları tatmanız her anlamda büyük olgunluk katıyor.

Okumaya devam et Hacettepe Teknokentte Staj Yapmak 2018

PHP ve MySQL Programlama

 

Merhabalar, bu yazıyla birlikte  PHP ve MySQL programlama öğreneceğiz. Bu yazımda phpMyAdmin de veritabanı oluşturmayı ve oluşturduğumuz bu veritabanına PHP de oluşturduğumuz form üzerinden Tabloya Kayıt ekleme,Kayıtları listeleme,kaydı düzenleme,kaydı silme ve istediğimiz tablo sütunlarında kayıt aramayı öğreneceğiz..

PHP5 ile birlikte mysqli sınıfı geliştirilmiştir. MySQLi(MySQL Improved) eklentisi ile geliştirilmeye açık dinamik ve güvenilir kodlama oluşturma imkanını sunmaktadır. mysqli sınıfı OOP tabanlı ve fonksiyon tabanlı kullanım imkanı veriyor. Biz yazılarımızda sınıf tabanlı kullanımı öğreneceğiz.

Okumaya devam et PHP ve MySQL Programlama

Hacettepe Teknokentte Staj Yapmak 2017

Öncelikle Teknokent nedir  ondan bahsetmek istiyorum, AR-GE Yazılım ve Tasarım firmalarının faaliyette bulunduğu teknoloji geliştirme bölgesidir.  Teknokentte 243 firma arasında Weblink Bilgi  Teknolojileri Danışmanlık A.Ş. ilk stajımı gerçekleştirdim. Hacettepe Teknokent Hacettepe Üniversitesi Beytepe Kampüsünde bulunmakta, ikamet ettiğim yerden oraya ulaşım için her sabah 2 otobüs ve metro ile birbuçuk saatte varıyordum.. Benim için yol çok yorucuydu, sabah iş saati otobüsler ve metro tıklım tıklım sürekli ayaktasınız.. Ama bu bütün yorgunluk Hacettepe Teknokent Safir Blokların muhteşem mimarisini görünce kalmıyor ve tekrar enerjiniz tavan yapıyor 🙂 kısa sürelide olsa oranın bir personelisiniz ve artık Mühendislik adına bir adım atmış işinizi yapıyorsunuz bu harika bir duygu.. Üstelik çalışma ortamınız hayallerinizdeki gibiyse ; Beyaz bir masa, Apple IMAC bilgisayar ve etrafınızda takır takır kod yazan mühendisler ve yerine göre ciddi yerine göre eğlenceli bir iş ortamınız varsa bu ortama gideceğinizi  düşünmek yorgunluğumu falan üzerimden atıyordu 🙂

Okumaya devam et Hacettepe Teknokentte Staj Yapmak 2017