Spring Boot ile Controller Oluşturma

Bu yazıda, Spring Boot’ta controller oluşturmanın nasıl yapıldığını ayrıntılı bir şekilde inceleyeceğiz.

Bir web uygulamasında controller, kullanıcının yaptığı isteklere cevap veren bileşendir. HTTP istekleri alır, bu istekleri işler ve genellikle bir yanıt döndürür. Bu yanıt, veritabanı verileri, bir hata mesajı veya başka bir içerik olabilir.

Controller Oluşturma

Spring Boot’ta bir sınıfı controller olarak işaretlemek için @RestController anotasyonunu kullanıyoruz. Bu, sınıfın HTTP taleplerini işleyen metotları içereceğini belirtir.

Örnek olarak, Product adında bir modelimiz olduğunu varsayalım:

Bu model için basit bir controller oluşturalım:

Anotasyonların Detaylı İncelenmesi

 @RestController:  Bu anotasyon, sınıfın bir controller olduğunu ve yanıtların genellikle JSON ya da XML gibi bir formatla döneceğini belirtir.

 @RequestMapping:  Bu anotasyon genel bir amaca hizmet eder. HTTP isteğinin türüne (GET, POST, PUT, DELETE vs.) bağlı kalmaksızın bir URL yolu ile bir metodu eşleştirmek için kullanılır. Ayrıca, sınıf seviyesinde de kullanılabilir, bu şekilde tüm metotlar için ortak bir temel yol (base path) tanımlanabilir.

 @GetMapping:  HTTP GET isteğiyle bir metodu işaret eder. Örneğin, bir ürünün detaylarını getirmek için kullanılır.

 @PostMapping:  HTTP POST isteğiyle bir metodu işaret eder. Yeni bir kaynak oluşturmak için kullanılır.

 @PutMapping:  HTTP PUT isteğiyle bir metodu işaret eder. Varolan bir kaynağı tamamen güncellemek için kullanılır.

 @PatchMapping:  HTTP PATCH isteğiyle bir metodu işaret eder. Varolan bir kaynağın sadece belirli kısımlarını güncellemek için kullanılır.

 @DeleteMapping:  HTTP DELETE isteğiyle bir metodu işaret eder. Bir kaynağı silmek için kullanılır.

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping: Bunlar aslında @RequestMapping’in özel versiyonlarıdır. Spesifik HTTP metotları için kullanılırlar.

Örneğin, @GetMapping sadece HTTP GET istekleri için kullanılır. Bu anotasyonlar sayesinde kod daha okunaklı hale gelir.

@RequestMapping:

@GetMapping, @PostMapping vs.:

 @RequestBody:  HTTP isteğinin gövdesindeki içeriği Java nesnesine dönüştürmek için kullanılır. Örneğin, yeni bir ürün oluşturulurken, bu ürünün detaylarını gövdede alabiliriz.

 @PathVariable:  URL’deki bir değeri almak için kullanılır. Örneğin, belirli bir ürünün detaylarını getirmek için bu ürünün ID’sini URL’den alabiliriz.

 @RequestParam:  URL’deki sorgu parametrelerini almak için kullanılır. 

Yada

 @RequestHeader:  Spring MVC’de HTTP istek başlıklarını (headers) bir metot parametresi olarak elde etmek için kullanılır. Böylece, bir istemcinin gönderdiği HTTP başlıklarını doğrudan bir controller metodu içerisinde kullanabiliriz.

@RequestHeader kullanımının en yaygın senaryolarından biri, özel bir HTTP başlık değerine göre işlem yapmaktır. Örneğin, dil seçenekleri, kimlik doğrulama bilgileri veya özel client bilgileri gibi başlıklar bu anotasyon ile kolayca alınabilir.

Örnek Kullanım:

Bir istemcinin gönderdiği User-Agent ve özel bir X-Custom-Header başlığını almak isteyelim:

Bu örnekte:

User-Agent başlığını doğrudan userAgent değişkenine atıyoruz. Bu başlık genellikle istemcinin tarayıcı veya uygulama bilgilerini içerir.

X-Custom-Header adında özel bir başlık alıyoruz. Eğer bu başlık istekte mevcut değilse, null değeri alacaktır, çünkü required özelliğini false olarak ayarladık. Bu özellik başlığın zorunlu olup olmadığını belirtir. Eğer zorunlu (default değeri true) olarak ayarlanmışsa ve başlık gelmezse Spring bir BadRequest hatası döndürür.

Bu şekilde, HTTP başlıklarını kolayca elde edebilir ve uygulamanızın işleyişini bu başlıklara göre özelleştirebilirsiniz.

Umarım “Spring Boot ile Controller Oluşturma” başlıklı yazım sizin için faydalı olmuştur.

Şu yazılar da ilginizi çekebilir.

REST API ve RESTful API Nedir?

Yeni bir yazımda görüşmek üzere.

Happy coding!

Yorum Yazın