정구리의 우주정복

[KOTLIN] API 공통 Response 정의하기 본문

JAVA/STUDY

[KOTLIN] API 공통 Response 정의하기

Jungry_ 2025. 9. 8. 13:10
반응형
package com.example.common.response

import com.fasterxml.jackson.annotation.JsonInclude
import java.time.LocalDateTime

@JsonInclude(JsonInclude.Include.NON_NULL)
data class ApiResponse<T>(
    val success: Boolean,
    val message: String,
    val data: T? = null,
    val error: ErrorDetail? = null,
    val timestamp: LocalDateTime = LocalDateTime.now(),
) {
    companion object {
        fun <T> success(
            data: T,
            message: String = "성공",
        ): ApiResponse<T> =
            ApiResponse(
                success = true,
                message = message,
                data = data,
            )

        fun success(message: String = "성공"): ApiResponse<Unit> =
            ApiResponse(
                success = true,
                message = message,
            )

        fun <T> error(
            message: String,
            errorCode: String? = null,
            details: String? = null,
        ): ApiResponse<T> =
            ApiResponse(
                success = false,
                message = message,
                error = ErrorDetail(errorCode, details),
            )
    }
}

data class ErrorDetail(
    val code: String?,
    val details: String?,
)
반응형
Comments