Spring Boot ile RESTful Web Servisi Geliştirme – Adım Adım Rehber

Spring Boot kullanarak basit ama gerçek bir RESTful web servisini, “Hello, World” örneği üzerinden adım adım geliştirelim.

Nasıl Geliştireceğiz?

Bu yazıda, aşağıdaki HTTP isteğini karşılayan basit bir REST servisi oluşturacağız:

GET http://localhost:8080/greeting

Servis, şu şekilde bir JSON çıktısı döndürecek:

{
  "id": 1,
  "content": "Hello, World!"
}

Ayrıca isteğe bağlı bir name parametresiyle selamlamayı kişiselleştirebileceğiz:

GET http://localhost:8080/greeting?name=User

Bu isteğin çıktısı ise şöyle olacak:

{
  "id": 1,
  "content": "Hello, User!"
}

Gereksinimler

  • Java 17 veya üzeri
  • Maven 3.5+ veya Gradle 7.5+
  • Herhangi bir IDE (IntelliJ IDEA, Spring Tool Suite, VS Code, vb.)
  • Yaklaşık 10–15 dakikalık zaman 😊

Spring Initializr ile Proje Oluşturma

Spring Boot uygulamalarını hızlıca başlatmak için Spring Initializr kullanabilirsiniz.

Adımlar:

  • https://start.spring.io adresine gidin.
  • Project olarak Maven veya Gradle seçin.
  • Language olarak Java’yı seçin.
  • Dependencies kısmından Spring Web ekleyin.
  • Generate butonuna tıklayarak ZIP dosyasını indirin.
  • ZIP’i açıp projeyi IDE’nize import edin.

Bu aşamadan sonra, Spring Boot tabanlı basit bir web uygulaması iskeleti hazır olacaktır.

Greeting Sınıfı – Resource Representation

Servisimizin döndüreceği veriyi temsil etmek için bir resource representation sınıfına ihtiyacımız var. Bu sınıf, döndürülecek JSON içindeki id ve content alanlarını barındıracak.

Aşağıdaki gibi bir Java record sınıfı oluşturabilirsiniz:

package com.example.restservice;

public record Greeting(long id, String content) { }

Spring Boot, varsayılan olarak gelen Jackson kütüphanesi sayesinde bu sınıfı otomatik olarak JSON’a çevirir. Ekstra bir JSON dönüştürme kodu yazmanıza gerek yoktur.

REST Controller Oluşturma

HTTP isteklerini karşılayacak ve uygun JSON cevabını döndürecek bir controller sınıfı yazalım.

package com.example.restservice;

import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(defaultValue = "World") String name) {
        return new Greeting(
            counter.incrementAndGet(),
            String.format(template, name)
        );
    }
}

Bu kod neler yapıyor?

  • @RestController → Sınıfın bir REST controller olduğunu belirtir; metotlar doğrudan JSON döndürür.
  • @GetMapping("/greeting")/greeting adresine gelen GET isteklerini greeting() metoduna yönlendirir.
  • @RequestParam → URL’deki name parametresini alır. Eğer parametre gönderilmezse, defaultValue = "World" devreye girer.
  • AtomicLong counter → Her istekte artan bir id değeri üretir.

Metot, her çağrıldığında yeni bir Greeting nesnesi oluşturur ve bu nesne Spring tarafından otomatik olarak JSON’a dönüştürülerek HTTP cevabının gövdesine yazılır.

Not: @RestController, aslında @Controller + @ResponseBody anotasyonlarının kısaltmasıdır. Yani her metot doğrudan response gövdesine yazılacak bir veri döndürür.

Uygulamayı Çalıştırma

Spring Initializr ile birlikte gelen ana uygulama sınıfı genellikle şu şekildedir:

package com.example.restservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RestServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(RestServiceApplication.class, args);
    }
}

@SpringBootApplication anotasyonu şunları kapsar:

  • @Configuration – Bean tanımları için konfigürasyon sınıfı olduğunu belirtir.
  • @EnableAutoConfiguration – Classpath’e göre otomatik yapılandırmayı aktif eder.
  • @ComponentScancom.example paketi altındaki bileşenleri (controller, service vb.) tarar.

Komut Satırından Çalıştırma

Maven ile:

./mvnw spring-boot:run

Gradle ile:

./gradlew bootRun

Uygulama ayağa kalktığında, varsayılan olarak http://localhost:8080 adresinden çalışır.

Servisi Test Etme

Tarayıcı, Postman veya başka bir HTTP istemcisi ile aşağıdaki adresi ziyaret edin:

http://localhost:8080/greeting

Beklenen çıktı:

{"id":1,"content":"Hello, World!"}

Şimdi de name parametresini gönderelim:

http://localhost:8080/greeting?name=User

Bu seferki çıktı:

{"id":2,"content":"Hello, User!"}

Burada iki şeyi doğrulamış oluyoruz:

  • @RequestParam ile gelen name parametresinin başarıyla metoda bağlanması.
  • counter alanının her istekte artarak yeni bir id üretmesi.

Sonuç ve Sonraki Adımlar

Bu yazıda, Spring Boot ile sıfırdan basit ama gerçek bir RESTful Web Servisi geliştirdik. Sadece birkaç sınıf ve minimal konfigürasyonla JSON döndüren bir API’yi çalışır hale getirdik.

Sonraki adımlar için şunları deneyebilirsiniz:

  • POST, PUT ve DELETE endpoint’leri eklemek
  • Spring Data JPA ile veritabanı bağlantısı kurmak
  • Exception handling (hata yönetimi) yapısı eklemek
  • Swagger / OpenAPI ile API dokümantasyonu oluşturmak

Spring Boot ile REST API geliştirmeye başlamak için bu örnek yeterince sağlam bir temel sunuyor. Buradan itibaren projeyi ihtiyaçlarınıza göre genişletebilirsiniz.

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *