-
노출하고싶지 않은 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