Java Spring Boot consuming web service önemli bir konu mudur?

706111

Hectopat
Katılım
28 Ağustos 2023
Mesajlar
6.020
Makaleler
1
Çözümler
29
Arkadaşlar merhaba. Spring Boot RestFul API'leri, Response Entity ve Basic authentication öğrendim. Fena olmayan şeyler yaptım. Biraz daha öğrenmek istiyorum Spring Boot. Spring guides sitesinden öğrenmeye çalışıyorum.
Türkçe kaynak bulamadım. Çevirerek bir takım bir şeyler yapmaya çalıştım, Chat GPT'ye sordum ama olayını bir türlü anlamadım. Bu konu tam olarak nedir ve önemli br konu mudur?

Konu bu;
 
Restful API öğrendim diyorsunuz ama "web servis consume etmek ne demek" diye sorduğunuza göre web servis nedir/ne işe yarar konseptini hiç anlamamışsınız ki daha.

Tutoriallerde konsepti anlayabilmenizi sağlayan basit kodlar bulunur, kodun aynısını ya da biraz editlenmişini bilgisayarda yazıp çalıştırınca konuyu öğrenmiş olmuyorsunuz, "öğrendim" dediğiniz konuları, yaptığınız "fena olmayan şeyler"i öğrenene kadar kurcalamaya/geliştirmeye devam edin, önceki konulara hakim olmazsanız chatgpt'ye konuyu anlattırsanız bile anlamanız zor. Tabi İngilizcenizi de ilerletmeye çalışın, çünkü linkte gerçekten basit bir dil kullanan, açık, net bir anlatım var, kolay gelsin.
 
Restful API öğrendim diyorsunuz ama "web servis consume etmek ne demek" diye sorduğunuza göre web servis nedir/ne işe yarar konseptini hiç anlamamışsınız ki daha.

Tutoriallerde konsepti anlayabilmenizi sağlayan basit kodlar bulunur, kodun aynısını ya da biraz editlenmişini bilgisayarda yazıp çalıştırınca konuyu öğrenmiş olmuyorsunuz, "öğrendim" dediğiniz konuları, yaptığınız "fena olmayan şeyler"i öğrenene kadar kurcalamaya/geliştirmeye devam edin, önceki konulara hakim olmazsanız chatgpt'ye konuyu anlattırsanız bile anlamanız zor. Tabi İngilizcenizi de ilerletmeye çalışın, çünkü linkte gerçekten basit bir dil kullanan, açık, net bir anlatım var, kolay gelsin.
Hocam işte Restfull Api'leri kullanarak ve basic authentication ile bir web sistesi yaptım. Sadece content adlı tablodaki bilgilere, get istekleriyle herkes erişebiliyor. Diğerleri API istekleri için bir "ADMIN" rolüne sahip hesapların girişi ile izin veriliyor.

Consume'deki olayı anlamadım. Çünkü iki farklı sunucu çalışacak ve birinden log alınacak ama buradaki olay tam olarak ne anlamadım. Ondan sizlere sordum. Sırayla konuyları çalışıyorum da ondan.
 
Web servisler birbirleri ile haberleşirler, bu sizin kendi servisleriniz için de geçerli, sizin servislerinizin dışarıdaki servislerle haberleşmesi için de geçerli.

Diyelim ki sizin servisA diye bir web servisiniz var, authorization ve authentication'a göre bilgi sunuyor, content tablosundan ya da başka tablolardaki bilgileri dönüyor.

Başka bir servis yazdınız, bu servisB'ye bir client ekliyorsunuz ki servisA'dan bilgi çekebilsin.

Diyelim ki ben servisC diye bir servis yazdım, sizin content tablosundan bilgi alabilmem için servisA'ya istek atan bir client (consumer yani) ekliyorum.

Şöyle düşünün, bir alışveriş sitesi mimarisinde; login servisi, ürünleri tutan servis, siparişleri tutan servis, ayrıca arka planda çalışan fatura/muhasebe servisi, stok/lojistik servisi vb. çok sayıda servis olduğunu düşünün. Bunları sürekli birbiriyle haberleşmesi gerekir, mesela ürün servisi->stok servisine istek atar ve size ürünün açıklaması/fotoğrafları ile beraber stok miktarı bilgisini dönebilir. Sipariş vereceğiniz zaman mesela bir token istenir sizden, sipariş servisine gönderdiğiniz tokenı login servisinden kontrol eder ve kayıtlı bir kullanıcı olduğunuzu onaylar vb. Dışarıdaki servislerin apilerine de mesela ödeme yapmak için bankaların apileri ile haberleşen clientlara ihtiyaç vardır.

Siz bu spring örneğinde bir sunucu diğerinden log alıyor da ee bu ne işe yarıyor kapsamında düşünürseniz anlamayabilirsiniz ama web servis kavramı kafanızda otursaydı; web servislerin birbiri ile haberleştiğini bilirdiniz, burada bu konsepti zaten bildiğinizi varsayıyor ve springde bu işi nasıl yaparız diye anlatıyor. Konseptleri öğrenmeden bir dil/framework öğrenmeye çalışmanın ezbere dayalı ve verimsiz bir eğitim olduğunu düşünüyorum.
 
Son düzenleme:
Şöyle düşünebilirsiniz; web servisler birbirleri ile haberleşirler, bu sizin kendi servisleriniz için de geçerli, sizin servislerinizin dışarıdaki servislerle haberleşmesi için de geçerli.

Diyelim ki sizin servisA diye bir web servisiniz var, authorization ve authentication'a göre bilgi sunuyor, content tablosundan ya da başka tablolardaki bilgileri dönüyor.

Başka bir servis yazdınız, bu servisB'ye bir client ekliyorsunuz ki servisA'dan bilgi çekebilsin.

Diyelim ki ben servisC diye bir servis yazdım, sizin content tablosundan bilgi alabilmem için servisA'ya istek atan bir client (consumer yani) ekliyorum.

Şöyle düşünün, bir alışveriş sitesi mimarisinde; login servisi, ürünleri tutan servis, siparişleri tutan servis, ayrıca arka planda çalışan fatura/muhasebe servisi, stok/lojistik servisi vb. çok sayıda servis olduğunu düşünün. Bunları sürekli birbiriyle haberleşmesi gerekir, mesela ürün servisi->stok servisine istek atar ve size ürünün açıklaması/fotoğrafları ile beraber stok miktarı bilgisini dönebilir. Sipariş vereceğiniz zaman mesela bir token istenir sizden, sipariş servisine gönderdiğiniz tokenı login servisinden kontrol eder ve kayıtlı bir kullanıcı olduğunuzu onaylar vb. Dışarıdaki servislerin apilerine de mesela ödeme yapmak için bankaların apileri ile haberleşen clientlara ihtiyaç vardır.

Siz bu spring örneğinde bir sunucu diğerinden log alıyor da ee bu ne işe yarıyor kapsamında düşünürseniz anlamayabilirsiniz ama web servis kavramı kafanızda otursaydı; web servislerin birbiri ile haberleştiğini bilirdiniz, burada bu konsepti zaten bildiğinizi varsayıyor ve springde bu işi nasıl yaparız diye anlatıyor. Konseptleri öğrenmeden bir dil/framework öğrenmeye çalışmanın ezbere dayalı ve verimsiz bir eğitim olduğunu düşünüyorum.
Aynen, doğru noktaya değindiniz hocam. Sabah kadar bilgi çekilebilir ama anlam verememiştim o yüzden konseptleri öğrenerek böyle çalışmak daha iyi olur.

Güzelce açıkladığınız için teşekkür ettim bu konuyu.
 
Web servis consume etmek basitca baskasinin actigi web servisle iletisim kurmak demek. Bu iletisimi baska bir web-service de yapiyor olabilir, basit bir client da yapiyor olabilir.

Ilk mesajdaki ornegin tum olayi su class -> RestTemplate (Spring Framework 6.1.12 API)

Ancak ben reactive ve non-blocking alternatifi olan WebClient 'i tavsiye ederim ( Eger Spring sartsa ): WebClient :: Spring Framework

Eger yalnizca WS consume edeceksen bunlara gerek yok, Retrofit, okHTTP vs gibi lightweight alternatifleri daha rahat.

Dependency Injection kullanacaksan farkli servislere farkli template'lar belirlersin; OAuth dance isini Spring senin icin yapar, ya da senin icin codec ayarlarini halleder.

WS consume etmek sadece Restful dunyadan da ibaret degil, bunlarin hicbirini kullanmadan GraphQL ya da gRPC uzerinden de haberlesebilirsin. Teknik olarak onlar da WS consumtion metodlari.

Ek olarak HTTP2 ya da HTTP3 consume edecegin zaman da farkli RFC ler ile uyumlu client'lar kullanman gerekiyor. Apple bolca kullaniyor HTTP/2 ' yi ornegin kendi web-service tanimlarinda.
 
Web servis consume etmek basitca baskasinin actigi web servisle iletisim kurmak demek. Bu iletisimi baska bir web-service de yapiyor olabilir, basit bir client da yapiyor olabilir.

Ilk mesajdaki ornegin tum olayi su class -> RestTemplate (Spring Framework 6.1.12 API)

Ancak ben reactive ve non-blocking alternatifi olan WebClient 'i tavsiye ederim ( Eger Spring sartsa ): WebClient :: Spring Framework

Eger yalnizca WS consume edeceksen bunlara gerek yok, Retrofit, okHTTP vs gibi lightweight alternatifleri daha rahat.

Dependency Injection kullanacaksan farkli servislere farkli template'lar belirlersin; OAuth dance isini Spring senin icin yapar, ya da senin icin codec ayarlarini halleder.

WS consume etmek sadece Restful dunyadan da ibaret degil, bunlarin hicbirini kullanmadan GraphQL ya da gRPC uzerinden de haberlesebilirsin. Teknik olarak onlar da WS consumtion metodlari.

Ek olarak HTTP2 ya da HTTP3 consume edecegin zaman da farkli RFC ler ile uyumlu client'lar kullanman gerekiyor. Apple bolca kullaniyor HTTP/2 ' yi ornegin kendi web-service tanimlarinda.
Hocam öncelikle pratik yaptıkça anlaşılan güzel bir konuymuş. Sistemden bağımsız yeni sistem oluşturmak gibi güzel bir şey. Diyelim bu konuyu iyice öğrendim. Mikro servisler konusuna geçeyim mi?
 

Technopat Haberler

Geri
Yukarı