Apidog ile Bir Spring Boot API'si Nasıl Oluşturulur ve Test Edilir

Spring Boot ile REST API oluşturmayı ve APIdog ile test etmeyi öğrenin. Spring Boot, Java ile web geliştirmeyi kolaylaştırır. APIdog, API'lerinizi test etmenize yardımcı olur.

Efe Demir

Efe Demir

5 June 2025

Apidog ile Bir Spring Boot API'si Nasıl Oluşturulur ve Test Edilir

Java ile bir web uygulaması veya bir mikro hizmet oluşturmak istediniz mi, ancak dahil olan karmaşıklık ve yapılandırmadan bunaldınız mı? Eğer öyleyse, yalnız değilsiniz. Birçok geliştirici, sunucuyu ayarlamak, bağımlılıkları yönetmek, veritabanını yönetmek ve daha fazlası gibi web geliştirmenin zorluklarıyla mücadele ediyor.

İşte bu yüzden Spring Boot bir oyun değiştirici. Spring Boot, Java ile web geliştirmeyi basitleştiren bir çerçevedir. Otomatik yapılandırma, gömülü sunucular, başlangıç bağımlılıkları ve daha fazlası gibi özellikler sağlar. Spring Boot ile, kalıp kodlarla uğraşmak yerine iş mantığınızı yazmaya odaklanabilirsiniz.

Ancak bir web uygulaması veya mikro hizmet oluşturmak yeterli değil. Ayrıca test etmeniz de gerekiyor. Yazılımınızın kalitesini ve güvenilirliğini sağlamak için test etmek çok önemlidir. Hataları bulmanıza ve düzeltmenize, performansı iyileştirmenize ve hataları önlemenize yardımcı olur.

İşte bu noktada Apidog devreye giriyor.

💡
Apidog, API'lerinizi test etmenize ve hatalarını ayıklamanıza yardımcı olan bir araçtır. API'nize bağlanmanıza ve uç noktaları keşfetmenize, test senaryoları oluşturmanıza ve çalıştırmanıza ve raporlar oluşturmanıza olanak tanır. Apidog ile, herhangi bir kod yazmadan API'nizi daha hızlı ve kolay bir şekilde test edebilirsiniz.
button

Bu blog yazısında, Apidog ile bir Spring Boot API'si oluşturmayı ve test etmeyi öğreneceksiniz. Spring Boot ile basit bir RESTful API oluşturacak ve Apidog ile test edeceksiniz.

Spring Boot nedir ve neden kullanılmalı?

Spring Boot, Spring uygulamalarının geliştirilmesini basitleştiren bir çerçevedir. Spring uygulamalarını oluşturmayı, yapılandırmayı, çalıştırmayı ve dağıtmayı kolaylaştıran birçok özellik ve kural sağlar. Spring Boot kullanmanın bazı faydaları şunlardır:

Spring Boot ile, iş mantığınızı yazmaya odaklanabilir ve çerçevenin geri kalanını halletmesine izin verebilirsiniz.

Spring boot officail website

Apidog nedir ve API'nizi test etmenize nasıl yardımcı olabilir?

Apidog , API'lerinizi basit ve sezgisel bir şekilde test etmenize yardımcı olan bir araçtır. API'nize bağlanmanıza, uç noktaları keşfetmenize ve API'niz için test senaryoları oluşturmanıza ve çalıştırmanıza olanak tanır. APIdog'un bazı özellikleri şunlardır:

Apidog ile, API'nizi hızlı ve güvenilir bir şekilde test edebilir ve kalitesini ve işlevselliğini sağlayabilirsiniz.

Apidog main interface

Projenin Kurulumu

İlk adım, Spring Initializr ile bir Spring Boot projesi oluşturmaktır. Spring Initializr, tercihlerinize göre sizin için temel bir proje yapısı ve yapılandırması oluşturan bir web aracıdır. Spring Initializr'ı kullanmak için şu adımları izleyin:

https://start.spring.io/ adresine gidin ve projenizin ayrıntılarını doldurun. Bu örnek için, aşağıdaki ayarları kullanacağım:

Setup Spring boot project

GENERATE düğmesine tıklayın ve projenizin zip dosyasını indirin.

Zip dosyasını çıkarın ve projeyi favori IDE'nizde açın.

Spring Web ve Spring Data JPA için bağımlılıkları ekleme

Sonraki adım, Spring Web ve Spring Data JPA için bağımlılıkları eklemektir. Spring Web, Spring ile RESTful API'ler oluşturmak için temel web desteğini sağlayan bir modüldür. Spring Data JPA, JPA ve Hibernate kullanarak ilişkisel veritabanlarındaki verilere erişimi ve veriler üzerinde işlem yapmayı basitleştiren bir modüldür.

Bu bağımlılıkları eklemek için, yukarıda belirtildiği gibi Spring Initializr'ı kullanabilir veya projenizin pom.xml dosyasını manuel olarak düzenleyebilir ve aşağıdaki bağımlılıkları ekleyebilirsiniz:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <scope>runtime</scope>
</dependency>

Uygulama özelliklerini yapılandırma

Sonraki adım, uygulama özelliklerini yapılandırmaktır. application.properties dosyası, uygulamanızın davranışını ve ayarlarını tanımlayan anahtar-değer çiftlerini içeren bir dosyadır. Bu örnek için, aşağıdaki özellikleri kullanacağız:

# Veritabanına erişmek için H2 konsolunu etkinleştirin
spring.h2.console.enabled=true
# H2 konsolunun yolunu ayarlayın
spring.h2.console.path=/h2-console
# Veritabanının URL'sini ayarlayın
spring.datasource.url=jdbc:h2:mem:testdb
# Veritabanının kullanıcı adını ayarlayın
spring.datasource.username=sa
# Veritabanının parolasını ayarlayın
spring.datasource.password=
# Veritabanının lehçesini ayarlayın
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# SQL ifadelerini konsolda gösterin
spring.jpa.show-sql=true
# Varlık sınıflarından veritabanı şemasını oluşturun
spring.jpa.hibernate.ddl-auto=update
# API'yi belgelemek için Swagger UI'yi etkinleştirin
springdoc.swagger-ui.enabled=true
# Swagger UI'nin yolunu ayarlayın
springdoc.swagger-ui.path=/swagger-ui.html

API'yi Oluşturma

Sonraki adım, API'yi oluşturmaktır. API, Kitap adlı basit bir varlık için bir alan modeli, bir depo ve bir denetleyiciden oluşacaktır. Bir Kitap'ın şu özellikleri olacaktır: id, başlık, yazar ve fiyat.

Basit bir varlık için alan modelini ve bir depoyu oluşturma

Alan modeli, varlığın verilerini ve davranışını temsil eden bir sınıftır. Depo, JpaRepository arabirimini genişleten ve varlığın verilerine erişmek ve veriler üzerinde işlem yapmak için yöntemler sağlayan bir arabirimdir.

Kitap varlığı için alan modelini ve depoyu oluşturmak için şu adımları izleyin:

Book.java sınıfı şöyle görünmelidir:

package com.example.apidogdemo.model;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

@Entity
@Table(name = "books")
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "title")
    @NotNull
    private String title;

    @Column(name = "author")
    @NotNull
    private String author;

    @Column(name = "price")
    @NotNull
    private BigDecimal price;

    public Book() {
    }

    public Book(Long id, String title, String author, BigDecimal price) {
        this.id = id;
        this.title = title;
        this.author = author;
        this.price = price;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

BookRepository.java arabirimi şöyle görünmelidir:

package com.example.apidogdemo.repository;

import com.example.apidogdemo.model.Book;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
    // You can define custom methods here
}

Bir denetleyici oluşturma ve CRUD işlemleri için uç noktaları tanımlama

Denetleyici, API'nin isteklerini ve yanıtlarını işleyen bir sınıftır. Denetleyici, varlık için CRUD işlemlerinin (oluşturma, okuma, güncelleme ve silme) uç noktalarını tanımlar.

Kitap varlığı için denetleyiciyi oluşturmak ve uç noktaları tanımlamak için şu adımları izleyin:

BookController.java sınıfı şöyle görünmelidir:

package com.example.apidogdemo.controller;

import com.example.apidogdemo.model.Book;
import com.example.apidogdemo.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;

import javax.validation.Valid;
import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/api/books")
public class BookController {

    @Autowired
    private BookRepository bookRepository;

    // Get all books
    @GetMapping
    public ResponseEntity<List<Book>> getAllBooks() {
        List<Book> books = bookRepository.findAll();
        return new ResponseEntity<>(books, HttpStatus.OK);
    }

    // Get a book by id
    @GetMapping("/{id}")
    public ResponseEntity<Book> getBookById(@PathVariable Long id) {
        Optional<Book> book = bookRepository.findById(id);
        if (book.isPresent()) {
            return new ResponseEntity<>(book.get(), HttpStatus.OK);
        } else {
            throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found");
        }
    }

    // Create a book
    @PostMapping
    public ResponseEntity<Book> createBook(@Valid @RequestBody Book book) {
        Book savedBook = bookRepository.save(book);
        return new ResponseEntity<>(savedBook, HttpStatus.CREATED);
    }

    // Update a book by id
    @PutMapping("/{id}")
    public ResponseEntity<Book> updateBook(@PathVariable Long id, @Valid @RequestBody Book book) {
        Optional<Book> existingBook = bookRepository.findById(id);
        if (existingBook.isPresent()) {
            book.setId(id);
            Book updatedBook = bookRepository.save(book);
            return new ResponseEntity<>(updatedBook, HttpStatus.OK);
        } else {
            throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found");
        }
    }

    // Delete a book by id
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteBook(@PathVariable Long id) {
        Optional<Book> existingBook = bookRepository.findById(id);
        if (existingBook.isPresent()) {
            bookRepository.deleteById(id);
            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        } else {
            throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Book not found");
        }
    }

    // Handle the validation exceptions
    @ExceptionHandler(javax.validation.ConstraintViolationException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleValidationExceptions(javax.validation.ConstraintViolationException ex) {
        return ex.getMessage();
    }
}

Spring Boot API'sini Apidog ile test etme

Son adım, API'yi Apidog ile test etmektir. Apidog, API'lerinizi basit ve sezgisel bir şekilde test etmenize yardımcı olan bir araçtır. API'nize bağlanmanıza, uç noktaları keşfetmenize ve API'niz için test senaryoları oluşturmanıza ve çalıştırmanıza olanak tanır.

button

API'yi Apidog ile test etmek için şu adımları izleyin:

Create new project
Enter details to create new project on Apidog
Select new API
Api endpoints list on apidog
Create a new test scenario on Apidog
Test cases scenarios on apidog

Test senaryolarınızı yürütmek ve her testin durumunu, çıktısını ve hatalarını görmek için test çalıştırıcısını kullanabilirsiniz. Test sonuçlarınızın kapsamlı ve özelleştirilebilir bir raporunu oluşturmak için rapor oluşturucuyu kullanabilirsiniz.

Sonuç

Bu blog yazısında, Apidog ile bir Spring Boot API'si oluşturmayı ve test etmeyi öğrendiniz. Spring Boot ile basit bir RESTful API oluşturdunuz ve Apidog ile test ettiniz.

Spring Boot, Java ile web geliştirmeyi basitleştiren bir çerçevedir. Otomatik yapılandırma, gömülü sunucular, başlangıç bağımlılıkları ve daha fazlası gibi özellikler sağlar. Spring Boot ile, kalıp kodlarla uğraşmak yerine iş mantığınızı yazmaya odaklanabilirsiniz.

Apidog, API'lerinizi test etmenize ve hatalarını ayıklamanıza yardımcı olan bir araçtır. API'nize bağlanmanıza ve uç noktaları keşfetmenize, test senaryoları oluşturmanıza ve çalıştırmanıza ve raporlar oluşturmanıza olanak tanır. Apidog ile, herhangi bir kod yazmadan API'nizi daha hızlı ve kolay bir şekilde test edebilirsiniz.

button

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin