OpenAPI, API dokümantasyonu ve test işlemlerini kolaylaştıran etkileşimli bir arayüz ve makine tarafından okunabilir belgeler sağlar. Bu kılavuz, SpringDoc kullanarak OpenAPI'yi Spring Boot uygulamanıza entegre etmenin yollarını gösterecektir.
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.
Endpoint'leri etkileşimli olarak test etmek için girişler yapın ve yanıtları gözlemleyin.
🏁 Sonuç
Artık OpenAPI 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.
Controller Örneği
JAVAUserController.java
package com.example.openapi.controller;
import com.example.openapi.model.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Operation(summary = "Tüm kullanıcıları getir", description = "Kullanıcı listesini alır")
@ApiResponse(responseCode = "200", description = "Başarılı işlem",
content = @Content(mediaType = "application/json"))
@GetMapping
public List<User> getAllUsers() {
return List.of(new User(1L, "John Doe", "john@example.com"));
}
@Operation(summary = "Yeni bir kullanıcı oluştur", description = "Sisteme yeni bir kullanıcı ekler")
@ApiResponse(responseCode = "201", description = "Kullanıcı başarıyla oluşturuldu",
content = @Content(mediaType = "application/json"))
@PostMapping
public User createUser(@RequestBody User user) {
return user;
}
}
User Model
JAVAUser.java
package com.example.openapi.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private String email;
}
Controller Örneği
KOTLINUserController.kt
package com.example.openapi.controller
import com.example.openapi.model.User
import io.swagger.v3.oas.annotations.*
import io.swagger.v3.oas.annotations.responses.*
import io.swagger.v3.oas.annotations.media.*
import org.springframework.web.bind.annotation.*
@RestController
@RequestMapping("/users")
class UserController {
@Operation(summary = "Tüm kullanıcıları getir", description = "Kullanıcı listesini alır")
@ApiResponse(responseCode = "200", description = "Başarılı işlem",
content = [Content(mediaType = "application/json")])
@GetMapping
fun getAllUsers(): List<User> = listOf(User(1L, "John Doe", "john@example.com"))
@Operation(summary = "Yeni bir kullanıcı oluştur", description = "Sisteme yeni bir kullanıcı ekler")
@ApiResponse(responseCode = "201", description = "Kullanıcı başarıyla oluşturuldu",
content = [Content(mediaType = "application/json")])
@PostMapping
fun createUser(@RequestBody user: User): User = user
}
User Model
KOTLINUser.kt
package com.example.openapi.model
data class User(
val id: Long,
val name: String,
val email: String
)