분류 전체보기15 [Spring] 스프링 API 공통 응답 포맷 반환 기능을 효율적으로 만들기 ( with ResponseBodyAdvice ) 개발 계기 SSAFY 2번째 프로젝트 초기에, 어떤 방식으로 응답을 내보낼 지 회의한 적은 없지만, 다른 백앤드 팀원들이 아래와 같은 방식으로 응답을 내보내는 것을 선호했다. 왜인지는 모르겠지만, 그 전 팀에서는 관습적으로 그렇게 하자고 하여, 의심 없이 수용했을 수도 있고, 다른 이유가 있을 수 있다. 정확히 왜 그런지 아시는 분들은 설명 부탁드립니다..! 정확히 아래와 같은 방식이었다. { status : "", msg : "", data : { } } 이런 방식의 큰 단점 한 가지가 명확해 보였다. 매 Controller Method 에서, 위의 공통 응답 코드를 만들어 주기 위한 작업을 해야 한다는 점이다. 예를 들어, 백앤드 개발을 할 때 50 개의 API Endpoint 를 만든다고 하자. 그.. 2024. 3. 24. [Java] WebClient + Reflection 기능 사용해 공공데이터 API 로 정보 받는 공통 모듈 만들기 상황 SSAFY 1학기 최종 프로젝트에서, 다양한 공공데이터를 받아와 DB에 저장해 놓고 사용자에게 정보를 전달하는 기능을 개발해야 했습니다. WebClient 를 활용해 공공데이터를 받아오기로 했지만, API 를 받아오고 처리하는 부분이 너무 중복되기에 이를 개선하고자 했습니다. 저는 이전에 JDBC 코드를 공통적으로 분리하여, DTO 에 매핑하는 것까지 Reflection 으로 자동화해 본 경험이 있었기에, WebClient 를 사용하는 부분도 이와 비슷한 방법으로 코드 공통화 처리가 가능할 것이라고 생각했습니다. 문제 해결 1. 데이터마다 받아와야 하는 DTO 형식이 모두 다른데, 어떻게 해결할 것인가? 저는 여기서 Java Generic 기능을 활용하기로 했습니다. Generic 을 사용할 수 있.. 2024. 2. 26. Springboot 의 통합 테스팅 툴, RestAssured RestAssured 는 Springboot REST API 를 Java 코드로 검증하는 테스팅 도구입니다. 함수형 프로그래밍 방식(Method Chaining) 으로 동작하며, given / when / then 으로 나누어 테스트를 수행할 수 있다는 특징이 있습니다. 아래와 같은 방식으로 사용할 수 있습니다. given : 어떤 HTTP 입력 내용을 넣어줄 지에 대한 부분을 결정하는 부분입니다. header 내용, query string, path variable 내용, body 내용을 따로 설정해 줄 수 있습니다. body 의 경우, Java Object 형태( ex : LoginUserRequest 타입의 객체 ) 로 만들어 집어넣으면 JSON 형식으로 자동으로 바뀌어 들어가게 됩니다. query.. 2024. 1. 1. [Java] 반복되는 JDBC 코드를 재활용성 높게 활용하기 (with java.lang.reflect) 요약 : 이미 JDBCTemplate 가 있다는 것도 알고, 요즘은 JPA가 Entity 에 모두 자동화하여 DB 내용을 넣어준다는 것도 알지만, SSAFY 에서 순수 JDBC를 활용해 DTO로 데이터를 매핑해야 할 일이 생겼습니다. 노가다하는 것이 개발자로써 너무 말이 되지 않는다고 생각하여, 직접 try~catch~finally 를 활용하고 데이터를 매핑해 돌려주는 부분을 한 방에 처리해 줄 수 있는 기능을 만들었습니다. ( dto.setAbc(rs.getString(abc)) 처리하는 부분 모두 포함합니다 ) 문제 인식 1 : try~catch~finally 를 모든 메소드에 사용하는 것! SSAFY 자바 전공반 수업을 듣는 중, Java 와 DB를 연결하는 JDBC에 대해서 배우게 되었습니다. 그.. 2023. 9. 17. 이전 1 2 3 4 다음