본문 바로가기
개발/SPRINGBOOT

ApiResponse 형태

by tsuyuoto 2024. 12. 16.
반응형

백엔드에서 status 객체를 관리하려면, 상태에 따라 적절한 상태 코드와 메시지를 반환해야 합니다. 예를 들어, Java로는 다음과 같이 처리할 수 있습니다.

예시: Java에서 상태 객체 생성

import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;

public class ApiResponse<T> {
    private String id;
    private Status status;
    private Object data;  // 단일 객체 혹은 복수 객체(빈 리스트 또는 맵 포함)

    // 상태 클래스
    public static class Status {
        private String code;
        private String message;
        private String details;

        // 생성자, getter, setter
        public Status(String code, String message, String details) {
            this.code = code;
            this.message = message;
            this.details = details;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public String getDetails() {
            return details;
        }

        public void setDetails(String details) {
            this.details = details;
        }
    }

    // ApiResponse 생성자
    public ApiResponse(String id, Status status, Object data) {
        this.id = id;
        this.status = status;
        this.data = data;
    }

    // getter, setter
    public String getId() {
        return id;
    }

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

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

 

 

 

단일 객체 및 복수 객체 리턴 예시

단일 객체 리턴 예시

단일 객체는 기존처럼 그냥 하나의 객체를 반환합니다.

 

public class User {
    private String name;
    private int age;

    // 생성자, getter, setter
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

복수 객체 리턴 (빈 리스트 사용)

복수 객체는 **List**나 **Map**을 사용하며, 데이터가 없을 경우 빈 컬렉션을 반환합니다.

 

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;

public class ApiExample {

    public static void main(String[] args) {
        // 상태 정보
        ApiResponse.Status status = new ApiResponse.Status("success", "Request was successful", null);

        // 데이터가 있을 때 (단일 객체)
        User user = new User("John Doe", 30);
        ApiResponse<User> responseWithUser = new ApiResponse<>("12345", status, user);

        // 데이터가 있을 때 (복수 객체)
        List<User> users = Arrays.asList(
            new User("John Doe", 30),
            new User("Jane Smith", 25)
        );
        ApiResponse<List<User>> responseWithUsers = new ApiResponse<>("12346", status, users);

        // 데이터가 없을 때 (빈 리스트)
        ApiResponse<List<User>> responseWithoutUsers = new ApiResponse<>("12347", status, new ArrayList<>());

        // 출력 예시: 단일 객체
        System.out.println("Response with user: " + responseWithUser.getData());

        // 출력 예시: 복수 객체
        List<User> returnedUsers = (List<User>) responseWithUsers.getData();
        returnedUsers.forEach(userItem -> System.out.println(userItem.getName()));

        // 출력 예시: 데이터가 없을 때 (빈 리스트)
        List<User> returnedEmptyUsers = (List<User>) responseWithoutUsers.getData();
        System.out.println("Empty users list size: " + returnedEmptyUsers.size());  // 0
    }
}
반응형

'개발 > SPRINGBOOT' 카테고리의 다른 글

REDIS 주의할점.  (0) 2024.10.06