ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 노출하고싶지 않은 Json값
    스프링 2023. 4. 13. 00:52

    프로젝트를 하면서 백엔드 서버 작업을 하고, api를 제공을 해야했다.
    json의 공통된 스펙을 가져가면 응답을 지정하기에 편리하고 생산성이 향상된다고 생각했고 이를 시도 하려고 했다.

    "message": "응답메시지",
    "data": data

    message에 응답에 대한 메시지를 넣고 , data에 이에 해당하는 데이터를 넣어서 응답을 하려고 했다.

    @AllArgsConstructor
    public class BaseResponse<T>{
        private ResponseMessage message;
        private T data;
    
        public BaseResponse(ResponseMessage message) {
            this.message = message;
        }
    
        public static <T> BaseResponse success(ResponseMessage message, T data) {
            return new BaseResponse(DATA_SUCCESSFULLY_PROCESSED);
        }
    }

    post나 put요청시에 전체 데이터에 대한 정보를 보여주기 보다는, 데이터가 잘 넘어갔다는 메시지만 띄워주려고 했지만,
    문제점은 data가 들어가지 않았을때에도 data가 null값으로 Body에 찍히기 때문에 보기 좋지 않았다.

    이를 코드단에서 상속이나 다른 방법으로 해결하려고 했지만 더 복잡해지고 유지보수하는데 더 시간이 들 것 같아서 다른 방법을 사용하였다.

    @AllArgsConstructor
    public class BaseResponse<T>{
        private ResponseMessage message;
        @JsonInclude(JsonInclude.Include.NON_EMPTY)
        private T data;
    
        public BaseResponse(ResponseMessage message) {
            this.message = message;
        }
    
        public static <T> BaseResponse success(T data) {
            return new BaseResponse(DATA_SUCCESSFULLY_PROCESSED);
        }
    }

    @JsonInclude(JsonInclude.Include.NON_EMPTY) 해당 어노테이션을 이용하면 해당 Key값이 null이면 Body에 그 값이 보이지 않는다.
    이렇게 간단한 어노테이션으로 Json스펙을 자유자재로 변화시킬 수 있다.

    728x90

    '스프링' 카테고리의 다른 글

    MockMVC의 perform  (0) 2023.07.21
    날짜 타입 JSON 변환에 관한 고찰  (0) 2023.05.15
    Junit Access denied for user  (0) 2023.04.05
    MultipartFile With Json  (0) 2023.04.03
    Swagger 404 오류  (0) 2023.03.31

    댓글

Designed by Tistory.