Şuayb'in BloguŞuayb'in Blogu
Ana Sayfa
Kategoriler
Oyunlar
MediumHakkındaİletişim
Dil
Tema
    1. Blog
    2. Programlama
    3. Spring Boot ile REST API Geliştirme

Spring Boot ile REST API Geliştirme

İlk yayın10 Aralık 2024
Son güncelleme11 Aralık 2024
Okuma süresi3 dk okuma
JavaKotlinSpring BootREST API
XLinkedInFacebook
Spring Boot ile REST API Geliştirme

Beğeni yükleniyor...

Spring Boot, RESTful web servislerini hızlı ve kolay bir şekilde geliştirmek için mükemmel bir araçtır. Bu yazıda, Spring Boot kullanarak bir REST API'nin nasıl oluşturulacağını adım adım göreceğiz.


Son güncelleme11 Aralık 2024

Toplam görüntülenmeGörüntülenme yükleniyor...

Önceki makaleSpring Boot - İlk UygulamaSonraki makaleGin - İlk Uygulama
Şuayb Şimşek

Yazan

Şuayb Şimşek

Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.

Uzmanlık

  • Spring Boot
  • Go
  • Mikroservis
  • Next.js
  • Cloud Native

Bağlantılar

GitHubLinkedInMedium

Benzer yazılar

Spring Boot HTTP Interface Client
Programlama

Spring Boot HTTP Interface Client

Deklaratif, tip güvenli HTTP çağrıları için Spring Boot 3.2+ HTTP Interface Client nasıl kullanılır öğrenin.

27 Nisan 20253 dk okuma
JavaKotlinSpring BootREST APIRest Client
Spring Boot Configuration Properties
Programlama

Spring Boot Configuration Properties

@ConfigurationProperties ile tip-güvenli yapılandırma tanımlamayı, @Validated ile ayarları doğrulamayı ve profile-specific application-{profile}.yml dosyalarıyla ortama göre değer yönetimini öğrenin.

4 Şubat 20263 dk okuma
JavaKotlinSpring BootYapılandırma
Spring Boot GraphQL JWE Kimlik Doğrulama
Programlama

Spring Boot GraphQL JWE Kimlik Doğrulama

Stateless şifreli JWT’ler (JWE) ile Spring Boot GraphQL API’lerinizi güvenli hale getirmeyi; kullanıcı kimliği ve rolleri JPA ile bir veritabanında saklamayı öğrenin.

17 Mayıs 20256 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEGraphQL

Hakkımda

Spring Boot, mikroservis, güvenlik ve daha fazlası hakkında yazılar.

İletişimYeni başladıysan

Son yazılar

  • Captain Tsubasa 2: World Fighters
  • Captain Tsubasa: Rise of New Champions
  • Spring Boot Configuration Properties
  • Spring Boot GraphQL JWE Kimlik Doğrulama
  • Spring Boot JPA ile JWE Kimlik Doğrulaması

Popüler konular

JavaKotlinSpring BootGüvenlikJWEJWT

Abone ol

Yeni yazılar yayınlandığında pratik backend ve fullstack notlarını al.

Sosyal

© 2024-2026 Şuayb'in Blogu. Tüm hakları saklıdır.

🌟 REST API Nedir?

REST (Representational State Transfer), web servisleri tasarlamak için kullanılan bir mimari stilidir. İstemciler ile sunucular arasındaki iletişimde standart HTTP yöntemlerini kullanır.

HTTP Yöntemleri

Bu alt bölümde HTTP Yöntemleri için, sonraki örneği doğru okumayı kolaylaştıran kısa bir bağlam veriyoruz.

YöntemAçıklamaÖrnek Endpoint
GETBir kaynağı alır./api/todos
POSTYeni bir kaynak oluşturur./api/todos
PUTKaynağı günceller veya oluşturur./api/todos/1
DELETEKaynağı siler./api/todos/1

📋 Gereksinimler

Başlamadan önce aşağıdakilerin hazır olduğundan emin olun:

  • Java 17+
  • Maven veya Gradle
  • Bir IDE (IntelliJ IDEA, Eclipse, VS Code)
  • HTTP metodları ve JSON payload yapısı hakkında temel bilgi

🛠️ Adım 1: Proje Oluşturma

Spring Boot projesini Spring Initializr kullanarak oluşturabilirsiniz. Aşağıdaki ayarları seçin:

  • Proje: Maven
  • Dil: Java veya Kotlin
  • Spring Boot Sürümü: 3.0.0+
  • Bağımlılıklar: Spring Web, Spring Boot DevTools, Lombok

Projeyi indirin, IDE'nizde açın ve çalıştırmaya hazırlanın.


🛠️ Adım 2: Model Sınıfı Oluşturma

Todo nesnesi için bir model sınıfı oluşturun:


🛠️ Adım 3: Controller Sınıfı Oluşturma

CRUD işlemlerini tanımlayan bir TodoController sınıfı ekleyin:


🧪 Adım 4: API'yi Test Etme

API'nizi test etmek için curl komutlarını kullanın:

  • GET Tüm Todos:
BASH
curl -X GET http://localhost:8080/api/todos
  • POST Yeni Todo:
BASH
curl -X POST http://localhost:8080/api/todos -H "Content-Type: application/json" -d '{"title": "New Todo", "completed": false}'
  • PUT Todo Güncelleme:
BASH
curl -X PUT http://localhost:8080/api/todos/1 -H "Content-Type: application/json" -d '{"title": "Updated Todo", "completed": true}'
  • DELETE Todo Silme:
BASH
curl -X DELETE http://localhost:8080/api/todos/1

🏁 Sonuç

Artık REST API Geliştirme için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.

JAVATodo.java
package com.example.demo.model;

import lombok.Data;

@Data
public class Todo {
    private Long id;
    private String title;
    private boolean completed;
}
KOTLINTodo.kt
package com.example.demo.model

data class Todo(
    var id: Long,
    var title: String,
    var completed: Boolean
)
JAVATodoController.java
package com.example.demo.controller;

import com.example.demo.model.Todo;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/api/todos")
public class TodoController {

    private List<Todo> todos = new ArrayList<>();

    @GetMapping
    public List<Todo> getAllTodos() {
        return todos;
    }

    @PostMapping
    public Todo createTodo(@RequestBody Todo todo) {
        todo.setId((long) (todos.size() + 1));
        todos.add(todo);
        return todo;
    }

    @PutMapping("/{id}")
    public Todo updateTodo(@PathVariable Long id, @RequestBody Todo updatedTodo) {
        Todo todo = todos.stream().filter(t -> t.getId().equals(id)).findFirst().orElse(null);
        if (todo != null) {
            todo.setTitle(updatedTodo.getTitle());
            todo.setCompleted(updatedTodo.isCompleted());
        }
        return todo;
    }

    @DeleteMapping("/{id}")
    public void deleteTodo(@PathVariable Long id) {
        todos.removeIf(todo -> todo.getId().equals(id));
    }
}
KOTLINTodoController.kt
package com.example.demo.controller

import com.example.demo.model.Todo
import org.springframework.web.bind.annotation.*

@RestController
@RequestMapping("/api/todos")
class TodoController {

    private val todos = mutableListOf<Todo>()

    @GetMapping
    fun getAllTodos(): List<Todo> = todos

    @PostMapping
    fun createTodo(@RequestBody todo: Todo): Todo {
        todo.id = (todos.size + 1).toLong()
        todos.add(todo)
        return todo
    }

    @PutMapping("/{id}")
    fun updateTodo(@PathVariable id: Long, @RequestBody updatedTodo: Todo): Todo? {
        val todo = todos.find { it.id == id }
        todo?.apply {
            title = updatedTodo.title
            completed = updatedTodo.completed
        }
        return todo
    }

    @DeleteMapping("/{id}")
    fun deleteTodo(@PathVariable id: Long) {
        todos.removeIf { it.id == id }
    }
}