본문으로 이동
Kotlin으로 DSL 만들기: 반복적이고 지루한 REST Docs 벗어나기
문서

Kotlin으로 DSL 만들기: 반복적이고 지루한 REST Docs 벗어나기

한규주 · 토스 · 토스 기술 블로그

원본 보기

소개

토스페이먼츠에서는 API docs를 REST Docs를 사용해서 작성할 수 있도록 권장하고 있습니다. 이 글에서는 DSL을 통해서 반복적인 REST Docs 테스트 코드 작성을 줄일 수 있는 방법을 알아봅니다.

AI 핵심 요약

REST Docs는 API 통합 테스트와 인터페이스 변경 감지에 유용하지만, 문서마다 반복적이고 장황한 테스트 코드를 작성해야 하는 문제가 있었습니다. 이를 줄이기 위해 Kotlin의 infix 함수와 Field 래퍼를 활용해 필드 타입, 설명, 기본값, 포맷, 샘플 등을 자연어에 가까운 형태로 선언하는 DSL을 만들었습니다. 날짜·날짜시간과 enum을 별도 타입으로 다루고 Field 함수 체이닝을 지원해 문서 정의를 간결하고 읽기 쉽게 구성했습니다. 글은 반복 작업을 복사해 해결하기보다 팀의 도메인과 규칙에 맞는 DSL을 만들어 생산성과 코드 가독성을 함께 높일 수 있다고 제안합니다.

  • Kotlin의 infix 함수는 receiver와 인자 하나를 자연어처럼 연결해 간결한 DSL을 만드는 데 적합합니다.
  • REST Docs의 필드 타입을 감싸는 도메인 타입을 두면 날짜·날짜시간 형식과 enum 예시를 일관되게 표현할 수 있습니다.
  • Field를 반환하는 DSL 함수에 설명, 기본값, 포맷, 샘플 설정을 체이닝하면 필드 정의를 읽기 쉽게 구성할 수 있습니다.
  • DSL은 내부 구현을 감추되 팀에서 사용하는 REST Docs 속성과 규칙을 명확히 드러내도록 설계해야 합니다.