Spring Rest - POST Örneği
Merhabalar arkadaşlar.
Bu yazıda Spring Boot kullanarak bir adet Spring Rest Post örneği yapacağız.
Daha önce Spring Rest GET Örneği yazımızda Spring Boot ile Spring Rest GET örneği yaparken ortamımızı hazırlamıştık ve sınıflarımızı yazmıştık. Bu yazı da o yazının bir devamı niteliğinde olacak. Bu nedenle ortam hazırlığı vs. konularına girmiyorum. Şimdi POST işlemi için yapmamız gerekene bakalım.
Ben bu yazıda kullanmak için MySQL veritabanı sunucusunda SpringRestPost adından bir veritabanı oluşturdum ve içinede de person adında şöyle bir tablo oluşturdum.
Web servisi yazdıktan sonra Postman ile istek yapıp kaydın düşüp düşmediğine bakacağız.
Şimdi ilk olarak PersonRegisterPojo adında yeni bir sınıf oluşturuyoruz. Bu sınıfı oluşturmaktaki amaç kullanıcıya döndürelecek response içerisinde hem gelen Person objesini hem de bizim ilave alan(lar)ımızı kullanmak olacaktır.
PersonRegisterPojo.java
PersonRegisterPojo sınıfı içerisinde POST ile gelen verilerin veritabanına yazılması işleminin neticesini tutacak bir String ve gelen Person objesini tutacak person değişkeni yer alıyor.
PostExampleController.java
- PostExampleController sınıfımız ilk olarak @RestController notasyonu ile işaretli.
- Post işlemini gerçekleştirecek postPerson metodumuz @RequestMapping notasyonu ile işaretli ve bu notasyona bu metodun hangi URL isteklerine cevap vereceğini tanımlayan RequestMapping ve hangi görevi yerine getireceğini gösteren method parametreleri geçiriliyor.
- postPerson metodu parametre alma kısmında @RequestBody notasyonu ile işaretli bir Person nesnesi alıyor. Burada metot default olarak bir JSON bekliyor ve gelen JSON’dan bir Person nesnesi oluşturulacak.
- Metot içerisinde ise PersonRegisterPojo nesnesi elde ediyoruz ve gelen Person’ı bu PersonRegisterPojo nesnesinin içine koyuyoruz.
- Kodun devam eden kısmında JDBC ile SpringRestPost veritabanına kayıt açılıyor ve person tablosuna kayıt yollanmaya çalışılıyor. Eğer kayıt işlemi başarılı olursa PersonRegisterPojo nesnesinin registeringResult alanına kaydın başarılı olduğuna dair mesaj geçiliyor. Eğer kayıt sırasında bir hata olursa da hata mesajı registeringResult alanına koyuluyor.
- Son kısımda ise PersonRegisterPojo sınıfını kullanarak bir ResponseEntity nesnesini oluşturup döndürüyoruz. Burada da default olarak JSON şeklinde cevap döndürülecek.
Şimdi projeye sağ tıklayıp Rus As kısmından Maven Build‘i seçelim ve şu komutu girelim. Akabinde Run butonuna tıklayalım.
Started Application in … seconds yazısını gördükten sonra Postman uygulamasını açalım.
Postman içerisinde kullanıcalacak HTTP metodu olarak POST’u seçiyoruz ve URL olarak http://localhost:8080/SpringRestTutorial/postPerson adresini veriyoruz. Akabinde Body tabına tıklıyoruz ve raw seçeneğini seçiyoruz. raw’ın olduğu satırın en sağ kısmından da JSON (application/json) seçeneğini seçiyoruz. TextArea alanına da web servisin beklediği şekilde bir JSON yazıyoruz. Beklediği şekildeden kasıt ise önceki yazıdaki Person sınıfı alanlarını taşıyan bir JSON olmasıdır. Burada adress alanının iç içe olduğuna dikkat etmek gerekir. Biz şöyle bir JSON gönderiyoruz:
Sol üstteki Send butonuna tıkladığımızda Postman bizim için web servise, verdiğimiz JSON’ı post edecek ve alttaki TextArea alanında POST işleminin neticesi yazacak. Ben butona tıkladığımda kaydın başarı ile ekleniğine dair Response döndü.
Veritabanına gidip baktığımda da kaydın aynen eklendiğini görüyorum.
Şimdi az önce gönderdiğimiz JSON’ın id alanı aynı kalsın ve içeriğini biraz değiştirelim. Sonra Postman’e bu JSON’ı verip POST edelim.
Aşağıdaki resimde göreceğiniz gibi bir duplicate hatası alacağız çünkü id alanı bir PrimaryKey alan ve tekrarlı veriye izin vermez. Bu nedenle de JDBC hata veriyor. Biz de hatayı dönen JSON içinde görüyoruz.
Bu yazıda anlatacaklarım bu kadar arkadaşlar. Başka bir yazıda görüşene kadar sağlıcakla kalın.
Selam ve Sevgilerimle