본문 바로가기

우테코

(34)
프로젝트 API문서 작성을 위한 Swagger 도입기 목차 1. API 문서 선정 기준 2. Swagger 선정 이유 3. 프로젝트 API 작성 사이클 4. Swagger 단점 극복기    4-1) 프로덕션 코드 침해 > interface 분리    4-2)  중복 코드 > 커스텀 애너테이션 5. 느낀 점 프로젝트에 들어오기 전 방학 때 가장 신경썼던 것이 무엇이냐 묻는다면 단연코 프론트와의 협력에서 가장 중요한 API문서이다. 그래서 Lv2 방학 기간 동안 Rest Docs와 Swagger를 각각 사용해보며 장단점을 알아보는 시간을 가지기도 했다. >> [Rest Docs vs Swagger] 시리즈더보기- 1편 : Rest Docs로 API 문서 자동화해보기 - 2편 : Swagger Spring docs적용기 이번 글에서는 우리 팀이 API 문서 작성..
MockRestServiceServer : 외부 API 호출 테스트 하기 문제 상황 우테코 Lv2 3번째 미션에서는 토스 API 연동을 통해 결제 기능을 구현해야 했다. 이는 우리가 요청에 대한 응답만을 주었던 서버로의 역할 뿐만 아니라, 결제 관련 정보를 토스 측에 전해주고, 토스 측으로 받은 응답을 통해 서비스를 이어가는 클라이언트로의 위치를 겸하게 되었음을 의미한다. 즉, 이제 외부 서버로부터 정보를 받아야 한다. 토스 API 문서가 워낙 친절해서 이것저것 찾아보며 구현은 완성했다.그러나, 페어였던 제제와 함께 찾아나가지 못한 질문이 있었는데외부 API 호출을 사용하는 서비스를 어떻게 테스트해야하는가? 에 대한 고민이다. 고민을 구체화 해보면 다음과 같다.문제1. 외부 API 응답에 대한 제어권이 개발자에게 있지 않다.개발자는 토스 API에 맞춘 요청을 전하고, 예측하고..
우테코 미션으로 찍먹한 QueryDsl : 동적쿼리 문제 상황JPA와 Spring Data Jpa를 처음 접한 날은 신세계의 연속이었다. 그러나, named쿼리가 아닌 JPQL을 작성하면서 JdbcTemplate에서 느꼈던 몇가지 공통된 불편함이 있었다. 문제1) String 쿼리 관리의 불편함 예를 들어 다음 쿼리를 보자@Query(" select r" + "from Reservation r " + "where r.reservationSlot.date = :date " + "and r.reservationSlot.theme.id =:themeId " + "and r.reservationSlot.time.id = :timeId")Optional findByDateAndThemeIdAndTimeId(Lo..
[우테코- Lv3] 아이디어 기획본1 보호되어 있는 글입니다.
[Rest Docs vs Swagger] 2편 : Swagger Spring docs적용기 지난 글에서는 Spring Rest Docs를 활용해 Api 문서를 자동화해보았다.하지만 Rest Docs에 비해 상대적으로 오래전부터 Api 문서화에 쓰였던 툴이 있으니 바로 Swagger이다. 이번 글에서는 Swagger로 Api문서를 작성해보면서어떤 점이 Rest Docs에 비해 좋았고, 또 아쉬웠는지 적어보고자 한다. 먼저 Swagger에 대해 이해하기 위해서는 OpenAPI에 대해 이해할 필요가 있다.- OpenApI란?: RESTful API의 표준 명세 작성 방식: RESTful API가 API 그 자체의 표준 규정이라면, : OpenApI Specification(OAS)는 그 API를 어떻게 문서로 명세해야하는지 표준 구조를 명시 OpenAPI를 지켜 문서를 작성한다면- 코드 사용자가 코..
[Rest Docs vs Swagger] 1편 : Rest Docs로 API 문서 자동화해보기 우테코 선배들이 캠퍼스에 방문했을 때, 프론트 개발자이신 분에게 질문을 한 적이 있다. - 프로젝트를 할 때 백엔드가 프론트를 위해 가장 중요하게 생각해야할 점이 무엇일까요? 답을 주셨다.- API 문서만 잘 뽑아주면 됩니다. 이렇듯 코드협업에 있어 API 문서화는 프로그래밍의 중요한 부분 중 하나이다.이 글은 개인 학습의 목적으로 작성된 글이다. API 자동화 도구인 Swagger와 RestDocs를 공식문서를 참고해 한번씩 실습해보고,이를 통해 내가 느낀 장단을 비교해보고자 한다. API문서란?웹은 정보를 원하는 클라이언트와 그 정보를 제공하는 서버로 나뉜다. 클라이언트들은 서버에게 자신이 원하는 정보를 요청한다.- 클라이언트1 : 정보를 주세요- 클라이언트2 : give me information-..
[Spring] 유효성 검사 목차 유효성 검사비즈니스 로직이 올바르게 작동하려면 데이터 사전 검증작업이 필요하다. 이것을 유효성 검사라고 한다. 자바에서는 2009년부터 Bean Validation이라는 데이터 유효성 검사 프레임 워크를 제공한다. Bean Validation을 사용한다는 것을 유효성 검사를 위한 로직을 도메인 모델과 묶어 각 계층에 사용하겠다는 의미이다.스프링 부트에서의 유효성 검사스프링 부트에서는 각 계층으로 데이터가 넘어오는 시점에 데이터 검사를 실시한다.스프링 부트 프로젝트는 계층간 데이터 전달을 담당하는 DTO 객체를 활용하기에 일반적으로 DTO에서 유효성 검사가 실시된다.스프링 부트 유효성 검사를 위한 의존성 추가스프링 부트 유효성 검사 기능은 spring-boot-starter-web에 포함되어있다. b..
[Spring] 웹 요청 - 응답 과정 본 글의 목적은 클라이언트에서 웹 요청을 했을 때Spring famework에서 어떤 과정을 통해 응답을 하는지러프한 흐름을 알아보는 것이다. 즉 다음 그림의 흐름이 무엇인지 이해하는 것이다 이 과정을 위해 먼저 알아봐야할 개념이 있다. DispatcherServlet가 그것이다.1. DispatcherServlet디스패처 서블릿은 서블릿의 일종이다 그럼 서블릿이란 무엇일까? 서블릿의 간편 정의" 클라이언트의 요청을 처리하고 그 결과를 반환하는 프로그램"  예를 들어 다음과 같은 HTTP 요청과 응답이 있다고 가정하자HTTP RequestHTTP Response 다음 예시는 매우 간단하지만 실제로는 여러 사용자가 더 복잡한 요청을 보내올 것이다...