Şuayb'in BloguŞuayb'in Blogu
Ana Sayfa
Kategoriler
Oyunlar
MediumHakkındaİletişim
Dil
Tema
    1. Blog
    2. Programlama
    3. Spring GraphQL ile API Oluşturma

Spring GraphQL ile API Oluşturma

İlk yayın15 Aralık 2024
Son güncelleme16 Aralık 2024
Okuma süresi3 dk okuma
JavaKotlinSpring BootGraphQL
XLinkedInFacebook
Spring GraphQL ile API Oluşturma

Beğeni yükleniyor...

Spring for GraphQL, Spring Boot ile entegre çalışan GraphQL API'lerinin geliştirilmesini kolaylaştırır. Bu rehber, Java ve Kotlin kullanarak bir GraphQL API'si oluşturmanızı, şema tanımlamayı, sorgu işleme ve bağlımlıkların enjekte edilmesini adım adım açıklıyor.


Son güncelleme16 Aralık 2024

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

Önceki makaleGin - İlk UygulamaSonraki makaleREST API’lerde Girdi Doğrulama
Ş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 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
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 JPA ile JWE Kimlik Doğrulaması
Programlama

Spring Boot JPA ile JWE Kimlik Doğrulaması

Stateless şifreli JWT’ler (JWE) kullanarak Spring Boot API’lerinizi güvenli hale getirirken, kullanıcı kimliklerini ve rolleri JPA destekli bir veritabanında nasıl saklayacağınızı öğrenin.

11 Mayıs 20254 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEJPA

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.

🌟 Neden GraphQL Kullanılmalı?

GraphQL, istemcilerin sadece gerekli olan verileri talep etmesine izin vererek, REST'e göre fazla veya eksik veri alma problemini azaltır. Ayrıca, güçlü tip desteği sunar ve verimli veri alma sağlar, modern API'ler için popüler bir seçenek haline gelir.


📋 Gereksinimler

📋 Aşağıdaki bileşenlerin kurulu olduğundan emin olun:

  • ☕ Java Development Kit (JDK) 17+
  • 📦 Maven veya Gradle kurulu
  • 🔤 Bir Java IDE (IntelliJ IDEA, Eclipse vb.)

🛠️ Adım 1: Bağımlıkları Ekleme

Spring for GraphQL'i etkinleştirmek için aşağıdaki bağlımlıkları projenize ekleyin.

Maven:

XMLpom.xml
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-graphql</artifactId>
</dependency>

Gradle:

GROOVYbuild.gradle
implementation 'org.springframework.boot:spring-boot-starter-graphql'

🛠️ Adım 2: GraphQL Şemasını Tanımlama

src/main/resources/graphql dizini altında schema.graphqls adlı bir dosya oluşturun.

GRAPHQLschema.graphqls
type Query {
  getUser(id: ID!): User
  getUsers: [User]
}

type User {
  id: ID!
  name: String!
  email: String!
}

🛠️ Adım 3: Veri Modeli ve Servislerin Tanımlanması

Sorguları işlemek için veri modelinizi ve servis katmanını tanımlayın.


🛠️ Adım 4: GraphQL Controller'ı Uygulama

GraphQL sorgularını ve mutasyonlarını işlemek için @Controller anotasyonunu kullanın.


▶️ Uygulamayı Çalıştırma

Uygulamayı aşağıdaki komutlarla çalıştırın:

Spring Boot (Java/Kotlin): Kurulumun doğru çalıştığını doğrulamak için uygulamayı tercih ettiğiniz dil yığınıyla başlatın.

BASH
./mvnw spring-boot:run

GraphQL Playground'a erişim sağlamak için http://localhost:8080/graphiql adresine gidin.


🧪 GraphQL API'sini Test Etme

API'nizi test etmek için aşağıdaki sorguları kullanabilirsiniz:

  • Bir kullanıcıyı ID'ye göre getir:
GRAPHQLquery.graphql
query {
  getUser(id: "1") {
    id
    name
    email
  }
}
  • Tüm kullanıcıları getir:
GRAPHQLquery.graphql
query {
  getUsers {
    id
    name
    email
  }
}

🏁 Sonuç

Artık Spring GraphQL ile API Oluşturma 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.

Entity

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

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String id;
    private String name;
    private String email;
}

Servis

JAVAUserService.java
package com.example.demo.service;

import com.example.demo.model.User;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@Service
public class UserService {

    private final Map<String, User> userData = Stream.of(
        new User("1", "Alice", "alice@example.com"),
        new User("2", "Bob", "bob@example.com")
    ).collect(Collectors.toMap(User::getId, user -> user));

    public User getUser(String id) {
        return userData.get(id);
    }

    public List<User> getUsers() {
        return List.copyOf(userData.values());
    }
}

Entity

KOTLINUser.kt
package com.example.demo.model

data class User(
    val id: String,
    val name: String,
    val email: String
)

Servis

KOTLINUserService.kt
package com.example.demo.service

import com.example.demo.model.User
import org.springframework.stereotype.Service

@Service
class UserService {

    private val userData = mapOf(
        "1" to User("1", "Alice", "alice@example.com"),
        "2" to User("2", "Bob", "bob@example.com")
    )

    fun getUser(id: String): User? = userData[id]

    fun getUsers(): List<User> = userData.values.toList()
}
JAVAUserController.java
package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.stereotype.Controller;

import java.util.List;

@Controller
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @QueryMapping
    public User getUser(String id) {
        return userService.getUser(id);
    }

    @QueryMapping
    public List<User> getUsers() {
        return userService.getUsers();
    }
}

KOTLINUserController.kt
package com.example.demo.controller

import com.example.demo.model.User
import com.example.demo.service.UserService
import org.springframework.graphql.data.method.annotation.QueryMapping
import org.springframework.stereotype.Controller

@Controller
class UserController(
    private val userService: UserService
) {

    @QueryMapping
    fun getUser(id: String): User? = userService.getUser(id)

    @QueryMapping
    fun getUsers(): List<User> = userService.getUsers()
}